summaryrefslogtreecommitdiff
path: root/controller/PostgreSQL.cpp
diff options
context:
space:
mode:
authorGrant Limberg <[email protected]>2021-09-02 12:45:19 -0700
committerGrant Limberg <[email protected]>2021-09-02 12:45:26 -0700
commit40f376e2b976a85e5108744803da94883d944dfe (patch)
tree29cd9f61097f665c6e0a5706e0837f2129a61623 /controller/PostgreSQL.cpp
parent1a1d7d9adad954b309bf16d92012b0c3112c83b1 (diff)
print db pool stats periodically
Diffstat (limited to 'controller/PostgreSQL.cpp')
-rw-r--r--controller/PostgreSQL.cpp26
1 files changed, 11 insertions, 15 deletions
diff --git a/controller/PostgreSQL.cpp b/controller/PostgreSQL.cpp
index 4550e872..740a0c30 100644
--- a/controller/PostgreSQL.cpp
+++ b/controller/PostgreSQL.cpp
@@ -806,7 +806,7 @@ void PostgreSQL::heartbeat()
std::string build = std::to_string(ZEROTIER_ONE_VERSION_BUILD);
std::string now = std::to_string(ts);
std::string host_port = std::to_string(_listenPort);
- std::string use_redis = "false"; // (_rc != NULL) ? "true" : "false";
+ std::string use_redis = (_rc != NULL) ? "true" : "false";
try {
pqxx::result res = w.exec0("INSERT INTO ztc_controller (id, cluster_host, last_alive, public_identity, v_major, v_minor, v_rev, v_build, host_port, use_redis) "
@@ -1309,25 +1309,18 @@ void PostgreSQL::onlineNotificationThread()
void PostgreSQL::onlineNotification_Postgres()
{
- try {
- auto c = _pool->borrow();
- _pool->unborrow(c);
- } catch(std::exception &e) {
- fprintf(stderr, "error getting connection in onlineNotification thread\n");
- exit(5);
- }
_connected = 1;
nlohmann::json jtmp1, jtmp2;
while (_run == 1) {
+ auto c = _pool->borrow();
try {
std::unordered_map< std::pair<uint64_t,uint64_t>,std::pair<int64_t,InetAddress>,_PairHasher > lastOnline;
{
std::lock_guard<std::mutex> l(_lastOnline_l);
lastOnline.swap(_lastOnline);
}
-
- auto c = _pool->borrow();
+
pqxx::work w(*c->c);
// using pqxx::stream_to would be a really nice alternative here, but
@@ -1361,10 +1354,9 @@ void PostgreSQL::onlineNotification_Postgres()
try {
pqxx::row r = w.exec_params1("SELECT id, network_id FROM ztc_member WHERE network_id = $1 AND id = $2",
- networkId, memberId);
-
+ networkId, memberId);
} catch (pqxx::unexpected_rows &e) {
- fprintf(stderr, "Member count failed: %s\n", e.what());
+ // fprintf(stderr, "Member count failed: %s\n", e.what());
continue;
}
@@ -1395,10 +1387,14 @@ void PostgreSQL::onlineNotification_Postgres()
w.commit();
}
// fprintf(stderr, "Updated online status of %d members\n", updateCount);
- _pool->unborrow(c);
} catch (std::exception &e) {
fprintf(stderr, "%s: error in onlinenotification thread: %s\n", _myAddressStr.c_str(), e.what());
- }
+ }
+ _pool->unborrow(c);
+
+ ConnectionPoolStats stats = _pool->get_stats();
+ fprintf(stderr, "pool stats: in use size: %llu, available size: %llu, total: %llu\n",
+ stats.borrowed_size, stats.pool_size, (stats.borrowed_size, stats.pool_size));
std::this_thread::sleep_for(std::chrono::seconds(10));
}