pgpool2.git / summary / log / commit / refs
commit 2b9d8aca0852aea9bcb0dc55068505978b44bbcd
Author: Muhammad Usama <m.usama@gmail.com>
Date: Thu Jul 06 19:21:19 2017 +0000
Fix for [pgpool-hackers: 2400] Garbage output
Mostly the log messages fixes and few code cleanups.
src/include/watchdog/wd_ipc_defines.h | 1 -
src/watchdog/watchdog.c | 99 ++++++++++++++++++++++++-----------
2 files changed, 69 insertions(+), 31 deletions(-)
diff --git a/src/include/watchdog/wd_ipc_defines.h b/src/include/watchdog/wd_ipc_defines.h
index e8f5a4417..0dc648b51 100644
--- a/src/include/watchdog/wd_ipc_defines.h
+++ b/src/include/watchdog/wd_ipc_defines.h
@@ -73,7 +73,6 @@ typedef enum WDValueDataType
#define WD_REGISTER_FOR_NOTIFICATION '0'
#define WD_NODE_STATUS_CHANGE_COMMAND '2'
#define WD_GET_NODES_LIST_COMMAND '3'
-#define WD_NODES_LIST_DATA '4'
#define WD_IPC_CMD_CLUSTER_IN_TRAN '5'
#define WD_IPC_CMD_RESULT_BAD '6'
diff --git a/src/watchdog/watchdog.c b/src/watchdog/watchdog.c
index 595173401..093aa6360 100644
--- a/src/watchdog/watchdog.c
+++ b/src/watchdog/watchdog.c
@@ -151,9 +151,17 @@ packet_types all_packet_types[] = {
{WD_CMD_REPLY_IN_DATA, "COMMAND REPLY IN DATA"},
{WD_FAILOVER_LOCKING_REQUEST,"FAILOVER LOCKING REQUEST"},
{WD_CLUSTER_SERVICE_MESSAGE, "CLUSTER SERVICE MESSAGE"},
+ {WD_REGISTER_FOR_NOTIFICATION, "REGISTER FOR NOTIFICATION"},
+ {WD_NODE_STATUS_CHANGE_COMMAND, "NODE STATUS CHANGE"},
+ {WD_GET_NODES_LIST_COMMAND, "GET NODES LIST"},
+ {WD_IPC_CMD_CLUSTER_IN_TRAN, "CLUSTER STATE NOT STABLE"},
+ {WD_IPC_CMD_RESULT_BAD, "IPC RESPONSE BAD"},
+ {WD_IPC_CMD_RESULT_OK, "IPC RESPONSE GOOD"},
+ {WD_IPC_CMD_TIMEOUT, "IPC TIMEOUT"},
{WD_NO_MESSAGE,""}
};
+
char* wd_failover_lock_name[] =
{
"FAILOVER",
@@ -506,7 +514,8 @@ static pid_t fork_watchdog_child(void);
static bool check_IPC_client_authentication(json_value *rootObj, bool internal_client_only);
static bool check_and_report_IPC_authentication(WDCommandData* ipcCommand);
-static void print_received_packet_info(WDPacketData* pkt,WatchdogNode* wdNode);
+static void print_packet_node_info(WDPacketData* pkt,WatchdogNode* wdNode, bool sending);
+static void print_packet_info(WDPacketData* pkt, bool sending);
static void update_interface_status(void);
static bool any_interface_available(void);
static WDPacketData* process_data_request(WatchdogNode* wdNode, WDPacketData* pkt);
@@ -3048,7 +3057,7 @@ static WDPacketData* read_packet_of_type(SocketConnection* conn, char ensure_typ
}
ereport(DEBUG1,
- (errmsg("received packet type %c while need packet type %c",type,ensure_type)));
+ (errmsg("received watchdog packet type:%c",type)));
if (ensure_type != WD_NO_MESSAGE && ensure_type != type)
{
@@ -3375,28 +3384,18 @@ static bool write_packet_to_socket(int sock, WDPacketData* pkt, bool ipcPacket)
{
int ret = 0;
int command_id, len;
- int i;
- packet_types *pkt_type = NULL;
- for (i =0; ; i++)
- {
- if (all_packet_types[i].type == WD_NO_MESSAGE)
- break;
-
- if (all_packet_types[i].type == pkt->type)
- {
- pkt_type = &all_packet_types[i];
- break;
- }
- }
ereport(DEBUG1,
- (errmsg("sending watchdog packet Socket:%d, Type:[%s], Command_ID:%d, data Length:%d",sock,pkt_type?pkt_type->name:"NULL", pkt->command_id,pkt->len)));
-
+ (errmsg("sending watchdog packet to socket:%d, type:[%c], command ID:%d, data Length:%d",sock,pkt->type,
+ pkt->command_id,pkt->len)));
+
+ print_packet_info(pkt, true);
+
/* TYPE */
if (write(sock, &pkt->type, 1) < 1)
{
ereport(LOG,
- (errmsg("failed to send packet Socket:%d, Type:[%s], Command_ID:%d, data Length:%d",sock,pkt_type?pkt_type->name:"NULL", pkt->command_id,pkt->len),
+ (errmsg("failed to write watchdog packet to socket"),
errdetail("%s",strerror(errno))));
return false;
}
@@ -3407,9 +3406,8 @@ static bool write_packet_to_socket(int sock, WDPacketData* pkt, bool ipcPacket)
if (write(sock, &command_id, 4) < 4)
{
ereport(LOG,
- (errmsg("failed to send command id, Socket:%d Type:[%s], Command_ID:%d, data Length:%d",sock,pkt_type?pkt_type->name:"NULL", pkt->command_id,pkt->len),
+ (errmsg("failed to write watchdog packet to socket"),
errdetail("%s",strerror(errno))));
-
return false;
}
}
@@ -3418,7 +3416,7 @@ static bool write_packet_to_socket(int sock, WDPacketData* pkt, bool ipcPacket)
if (write(sock, &len, 4) < 4)
{
ereport(LOG,
- (errmsg("failed to send length,Socket:%d Type:[%s], Command_ID:%d, data Length:%d",sock,pkt_type?pkt_type->name:"NULL", pkt->command_id,pkt->len),
+ (errmsg("failed to write watchdog packet to socket"),
errdetail("%s",strerror(errno))));
return false;
}
@@ -3432,7 +3430,7 @@ static bool write_packet_to_socket(int sock, WDPacketData* pkt, bool ipcPacket)
if (ret <=0)
{
ereport(LOG,
- (errmsg("failed to send packet data, Socket:%d Type:[%s], Command_ID:%d, data Length:%d",sock,pkt_type?pkt_type->name:"NULL", pkt->command_id,pkt->len),
+ (errmsg("failed to write watchdog packet to socket"),
errdetail("%s",strerror(errno))));
return false;
}
@@ -4095,6 +4093,9 @@ static bool send_message_to_connection(SocketConnection* conn, WDPacketData *pkt
static bool send_message_to_node(WatchdogNode* wdNode, WDPacketData *pkt)
{
bool ret;
+
+ print_packet_node_info(pkt,wdNode, true);
+
ret = send_message_to_connection(&wdNode->client_socket,pkt);
if (ret == false)
{
@@ -4964,7 +4965,7 @@ static int watchdog_state_machine(WD_EVENTS event, WatchdogNode* wdNode, WDPacke
}
else if (event == WD_EVENT_PACKET_RCV)
{
- print_received_packet_info(pkt,wdNode);
+ print_packet_node_info(pkt,wdNode, false);
/* update the last receiv time*/
gettimeofday(&wdNode->last_rcv_time, NULL);
@@ -7010,11 +7011,10 @@ static bool check_and_report_IPC_authentication(WDCommandData* ipcCommand)
return ret;
}
-/* DEBUG */
static void print_watchdog_node_info(WatchdogNode* wdNode)
{
ereport(DEBUG2,
- (errmsg("state: \"%s\" Host: \"%s\" Name: \"%s\" WD Port:%d PP Port: %d priority:%d",
+ (errmsg("state: \"%s\" Host: \"%s\" Name: \"%s\" WD Port:%d PP Port: %d priority:%d",
wd_state_names[wdNode->state],
wdNode->hostname
,wdNode->nodeName
@@ -7023,10 +7023,47 @@ static void print_watchdog_node_info(WatchdogNode* wdNode)
,wdNode->wd_priority)));
}
-static void print_received_packet_info(WDPacketData* pkt,WatchdogNode* wdNode)
+static void print_packet_node_info(WDPacketData* pkt,WatchdogNode* wdNode, bool sending)
{
int i;
packet_types *pkt_type = NULL;
+ /*
+ * save the cpu cycles if our log level would swallow this message
+ */
+ if (pool_config->log_min_messages > DEBUG1)
+ return;
+
+ for (i =0; ; i++)
+ {
+ if (all_packet_types[i].type == WD_NO_MESSAGE)
+ break;
+
+ if (all_packet_types[i].type == pkt->type)
+ {
+ pkt_type = &all_packet_types[i];
+ break;
+ }
+ }
+
+ ereport(DEBUG1,
+ (errmsg("%s packet, watchdog node:[%s] command id:[%d] type:[%s] state:[%s]",
+ sending?"sending":"received",
+ wdNode->nodeName,
+ pkt->command_id,
+ pkt_type?pkt_type->name:"UNKNOWN",
+ wd_state_names[get_local_node_state()])));
+}
+
+static void print_packet_info(WDPacketData* pkt, bool sending)
+{
+ int i;
+ packet_types *pkt_type = NULL;
+ /*
+ * save the cpu cycles if our log level would swallow this message
+ */
+ if (pool_config->log_min_messages > DEBUG2)
+ return;
+
for (i =0; ; i++)
{
if (all_packet_types[i].type == WD_NO_MESSAGE)
@@ -7038,11 +7075,13 @@ static void print_received_packet_info(WDPacketData* pkt,WatchdogNode* wdNode)
break;
}
}
+
ereport(DEBUG2,
- (errmsg("watchdog packet received from node \"%s\"",wdNode->nodeName),
- errdetail("command id : %d Type: %s my watchdog state :%s",pkt->command_id,
- pkt_type?pkt_type->name:"UNKNOWN",
- wd_state_names[get_local_node_state()])));
+ (errmsg("%s watchdog packet, command id:[%d] type:[%s] state :[%s]",
+ sending?"sending":"received",
+ pkt->command_id,
+ pkt_type?pkt_type->name:"UNKNOWN",
+ wd_state_names[get_local_node_state()])));
}
static int send_command_packet_to_remote_nodes(WDCommandData* ipcCommand, bool source_included)
[parent: e4c7c63f3ac2]