* pgpool: a language independent connection pool server for PostgreSQL
* written by Tatsuo Ishii
*
- * Copyright (c) 2003-2015 PgPool Global Development Group
+ * Copyright (c) 2003-2016 PgPool Global Development Group
*
* Permission to use, copy, modify, and distribute this software and
* its documentation for any purpose and without fee is hereby
#ifndef LIBPCP_EXT_H
#define LIBPCP_EXT_H
-
+#include <signal.h>
+#include <stdio.h>
/*
* startup packet definitions (v2) stolen from PostgreSQL
*/
} BackendInfo;
typedef struct {
- int num_backends; /* number of used PostgreSQL backends */
+ sig_atomic_t num_backends; /* Number of used PostgreSQL backends.
+ * This needs to be a sig_atomic_t type
+ * since it is replaced by a local
+ * variable while reloading pgpool.conf.
+ */
+
BackendInfo backend_info[MAX_NUM_BACKENDS];
} BackendDesc;
/*
* pgpool: a language independent connection pool server for PostgreSQL
* written by Tatsuo Ishii
*
- * Copyright (c) 2003-2013 PgPool Global Development Group
+ * Copyright (c) 2003-2016 PgPool Global Development Group
*
* Permission to use, copy, modify, and distribute this software and
* its documentation for any purpose and without fee is hereby
double total_weight;
int i;
bool log_destination_changed = false;
+ sig_atomic_t local_num_backends;
#ifdef USE_MEMCACHED
bool use_memcached = true;
#else
}
}
- pool_config->backend_desc->num_backends = 0;
+ local_num_backends = 0;
total_weight = 0.0;
for (i=0;i<MAX_CONNECTION_SLOTS;i++)
else
{
total_weight += BACKEND_INFO(i).unnormalized_weight;
- pool_config->backend_desc->num_backends = i+1;
+ local_num_backends = i+1;
/* intialize backend_hostname with a default socket path if empty */
if (*(BACKEND_INFO(i).backend_hostname) == '\0')
}
}
}
+ if (local_num_backends != pool_config->backend_desc->num_backends)
+ pool_config->backend_desc->num_backends = local_num_backends;
pool_debug("num_backends: %d total_weight: %f",
pool_config->backend_desc->num_backends, total_weight);
* pgpool: a language independent connection pool server for PostgreSQL
* written by Tatsuo Ishii
*
- * Copyright (c) 2003-2013 PgPool Global Development Group
+ * Copyright (c) 2003-2016 PgPool Global Development Group
*
* Permission to use, copy, modify, and distribute this software and
* its documentation for any purpose and without fee is hereby
double total_weight;
int i;
bool log_destination_changed = false;
+ sig_atomic_t local_num_backends;
#ifdef USE_MEMCACHED
bool use_memcached = true;
#else
}
}
- pool_config->backend_desc->num_backends = 0;
+ local_num_backends = 0;
total_weight = 0.0;
for (i=0;i<MAX_CONNECTION_SLOTS;i++)
else
{
total_weight += BACKEND_INFO(i).unnormalized_weight;
- pool_config->backend_desc->num_backends = i+1;
+ local_num_backends = i+1;
/* intialize backend_hostname with a default socket path if empty */
if (*(BACKEND_INFO(i).backend_hostname) == '\0')
}
}
}
+ if (local_num_backends != pool_config->backend_desc->num_backends)
+ pool_config->backend_desc->num_backends = local_num_backends;
pool_debug("num_backends: %d total_weight: %f",
pool_config->backend_desc->num_backends, total_weight);