mirror of
https://github.com/EnterpriseDB/repmgr.git
synced 2026-03-22 22:56:29 +00:00
repmgrd: prevent standby connection handle from going stale
If monitoring history not in use, there's no activity on the standby's connection handle, so if e.g. the standby is restarted, PQstatus() never returns CONNECTION_BAD and repmgrd never notices the connection is stale. Therefore execute a throw-away statement at "monitor_interval_secs".
This commit is contained in:
15
dbutils.c
15
dbutils.c
@@ -3847,6 +3847,21 @@ is_server_available_params(t_conninfo_param_list *param_list)
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Simple throw-away query to stop a connection handle going stale
|
||||
*/
|
||||
void
|
||||
connection_ping(PGconn *conn)
|
||||
{
|
||||
PGresult *res = PQexec(conn, "SELECT TRUE");
|
||||
|
||||
PQclear(res);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* ==================== */
|
||||
/* monitoring functions */
|
||||
/* ==================== */
|
||||
|
||||
@@ -466,6 +466,7 @@ int wait_connection_availability(PGconn *conn, long long timeout);
|
||||
/* node availability functions */
|
||||
bool is_server_available(const char *conninfo);
|
||||
bool is_server_available_params(t_conninfo_param_list *param_list);
|
||||
void connection_ping(PGconn *conn);
|
||||
|
||||
/* monitoring functions */
|
||||
void
|
||||
|
||||
@@ -1070,7 +1070,13 @@ loop:
|
||||
|
||||
|
||||
if (PQstatus(primary_conn) == CONNECTION_OK && config_file_options.monitoring_history == true)
|
||||
{
|
||||
update_monitoring_history();
|
||||
}
|
||||
else
|
||||
{
|
||||
connection_ping(local_conn);
|
||||
}
|
||||
|
||||
if (got_SIGHUP)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user