You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hawq.apache.org by wl...@apache.org on 2015/12/04 08:05:20 UTC

incubator-hawq git commit: HAWQ-220. Add retry to connect postmaster when handle RUAlive message

Repository: incubator-hawq
Updated Branches:
  refs/heads/master 74d6057ee -> 099717d29


HAWQ-220. Add retry to connect postmaster when handle RUAlive message


Project: http://git-wip-us.apache.org/repos/asf/incubator-hawq/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-hawq/commit/099717d2
Tree: http://git-wip-us.apache.org/repos/asf/incubator-hawq/tree/099717d2
Diff: http://git-wip-us.apache.org/repos/asf/incubator-hawq/diff/099717d2

Branch: refs/heads/master
Commit: 099717d29cbccaea3a5db8975c9fff4b141e74cb
Parents: 74d6057
Author: Wen Lin <wl...@pivotal.io>
Authored: Fri Dec 4 15:09:17 2015 +0800
Committer: Wen Lin <wl...@pivotal.io>
Committed: Fri Dec 4 15:09:17 2015 +0800

----------------------------------------------------------------------
 .../resourcemanager/requesthandler_RMSEG.c      | 34 ++++++++++++++------
 1 file changed, 24 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/099717d2/src/backend/resourcemanager/requesthandler_RMSEG.c
----------------------------------------------------------------------
diff --git a/src/backend/resourcemanager/requesthandler_RMSEG.c b/src/backend/resourcemanager/requesthandler_RMSEG.c
index 2d414b3..c96913d 100644
--- a/src/backend/resourcemanager/requesthandler_RMSEG.c
+++ b/src/backend/resourcemanager/requesthandler_RMSEG.c
@@ -226,19 +226,33 @@ bool handleRMSEGRequestRUAlive(void **arg)
 	int	libpqres = CONNECTION_OK;
 	PGconn *conn = NULL;
 	char conninfo[1024];
+	int retry = 5;
 
 	/* Check if can connect postmaster */
-	sprintf(conninfo, "options='-c gp_session_role=UTILITY' dbname=template1 port=%d connect_timeout=60", seg_addr_port);
-	conn = PQconnectdb(conninfo);
-	if ((libpqres = PQstatus(conn)) != CONNECTION_OK) {
-		elog(LOG, "Segment postmaster is down, libpb conn result : %d, %s",
-				  libpqres,
-				  PQerrorMessage(conn));
-		/* Don't send IMAlive anymore */
-		DRMGlobalInstance->SendIMAlive = false;
+	sprintf(conninfo,
+			"options='-c gp_session_role=UTILITY' dbname=template1 port=%d connect_timeout=60",
+			seg_addr_port);
+	while (retry > 0) {
+		retry--;
+		conn = PQconnectdb(conninfo);
+		if ((libpqres = PQstatus(conn)) != CONNECTION_OK) {
+			if (retry == 0) {
+				elog(LOG, "Segment's postmaster is down, PQconnectdb result : %d, %s",
+						  libpqres,
+						  PQerrorMessage(conn));
+				/* Don't send IMAlive anymore */
+				DRMGlobalInstance->SendIMAlive = false;
+			}
+			else {
+				pg_usleep(500000);
+				continue;
+			}
+		}
+		else {
+			elog(DEBUG3, "Segment's postmaster is healthy.");
+			break;
+		}
 	}
-	else
-		elog(DEBUG3, "Segment postmaster is healthy.");
 
 	PQfinish(conn);