diff --git a/dbutils.c b/dbutils.c index ce3e1401..55d72f23 100644 --- a/dbutils.c +++ b/dbutils.c @@ -146,7 +146,7 @@ is_pgup(PGconn *conn, int timeout) /* * Send a SELECT 1 just to check if the connection is OK */ - CancelQuery(conn); + CancelQuery(conn, timeout); if (wait_connection_availability(conn, timeout) != 1) goto failed; @@ -430,11 +430,13 @@ wait_connection_availability(PGconn *conn, int timeout) void -CancelQuery(PGconn *conn) +CancelQuery(PGconn *conn, int timeout) { char errbuf[ERRBUFF_SIZE]; PGcancel *pgcancel; + wait_connection_availability(conn, timeout); + pgcancel = PQgetCancel(conn); if (!pgcancel || PQcancel(pgcancel, errbuf, ERRBUFF_SIZE) == 0) @@ -442,5 +444,3 @@ CancelQuery(PGconn *conn) PQfreeCancel(pgcancel); } - - diff --git a/dbutils.h b/dbutils.h index fe3c0237..2fa967cc 100644 --- a/dbutils.h +++ b/dbutils.h @@ -37,5 +37,5 @@ PGconn *getMasterConnection(PGconn *standby_conn, char *schema, char *cluster, int *master_id, char *master_conninfo_out); int wait_connection_availability(PGconn *conn, int timeout); -void CancelQuery(PGconn *conn); +void CancelQuery(PGconn *conn, int timeout); #endif diff --git a/repmgrd.c b/repmgrd.c index 8b9ff711..94a49e9b 100644 --- a/repmgrd.c +++ b/repmgrd.c @@ -99,7 +99,7 @@ static void setup_event_handlers(void); #define CloseConnections() \ if (PQisBusy(primaryConn) == 1) \ - CancelQuery(primaryConn); \ + CancelQuery(primaryConn, local_options.master_response_timeout); \ if (myLocalConn != NULL) \ PQfinish(myLocalConn); \ if (primaryConn != NULL && primaryConn != myLocalConn) \ @@ -356,7 +356,7 @@ WitnessMonitor(void) * Cancel any query that is still being executed, * so i can insert the current record */ - CancelQuery(primaryConn); + CancelQuery(primaryConn, local_options.master_response_timeout); if (wait_connection_availability(primaryConn, local_options.master_response_timeout) != 1) return; @@ -473,7 +473,7 @@ StandbyMonitor(void) * Cancel any query that is still being executed, * so i can insert the current record */ - CancelQuery(primaryConn); + CancelQuery(primaryConn, local_options.master_response_timeout); if (wait_connection_availability(primaryConn, local_options.master_response_timeout) != 1) return;