diff options
| author | Grant Limberg <[email protected]> | 2022-06-22 10:36:29 -0700 |
|---|---|---|
| committer | Grant Limberg <[email protected]> | 2022-06-22 10:42:51 -0700 |
| commit | ccc0ebd0f9dd85c9f59f64c6fdda29b326f8f7cf (patch) | |
| tree | e03bd141403c5465f363a534650ac79277fb0e08 /controller/PostgreSQL.cpp | |
| parent | 9d4336d296eebabe3f9057c2c5b9959d1a5d452c (diff) | |
don't spam the logs quite as much on first startup
sleep the thread 1 second every round until we're actually updating
members
Diffstat (limited to 'controller/PostgreSQL.cpp')
| -rw-r--r-- | controller/PostgreSQL.cpp | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/controller/PostgreSQL.cpp b/controller/PostgreSQL.cpp index 4c561974..37d34dda 100644 --- a/controller/PostgreSQL.cpp +++ b/controller/PostgreSQL.cpp @@ -1684,6 +1684,7 @@ void PostgreSQL::onlineNotification_Redis() while (_run == 1) { fprintf(stderr, "onlineNotification tick\n"); auto start = std::chrono::high_resolution_clock::now(); + uint64_t count = 0; std::unordered_map< std::pair<uint64_t,uint64_t>,std::pair<int64_t,InetAddress>,_PairHasher > lastOnline; { @@ -1694,10 +1695,10 @@ void PostgreSQL::onlineNotification_Redis() if (!lastOnline.empty()) { if (_rc->clusterMode) { auto tx = _cluster->transaction(controllerId, true); - _doRedisUpdate(tx, controllerId, lastOnline); + count = _doRedisUpdate(tx, controllerId, lastOnline); } else { auto tx = _redis->transaction(true); - _doRedisUpdate(tx, controllerId, lastOnline); + count = _doRedisUpdate(tx, controllerId, lastOnline); } } } catch (sw::redis::Error &e) { @@ -1710,11 +1711,15 @@ void PostgreSQL::onlineNotification_Redis() fprintf(stderr, "onlineNotification ran in %llu ms\n", total); - std::this_thread::yield(); + if (count > 0) { + std::this_thread::yield(); + } else { + std::this_thread::sleep_for(std::chrono::seconds(1)); + } } } -void PostgreSQL::_doRedisUpdate(sw::redis::Transaction &tx, std::string &controllerId, +uint64_t PostgreSQL::_doRedisUpdate(sw::redis::Transaction &tx, std::string &controllerId, std::unordered_map< std::pair<uint64_t,uint64_t>,std::pair<int64_t,InetAddress>,_PairHasher > &lastOnline) { @@ -1778,6 +1783,8 @@ void PostgreSQL::_doRedisUpdate(sw::redis::Transaction &tx, std::string &control } tx.exec(); fprintf(stderr, "%s: Updated online status of %d members\n", _myAddressStr.c_str(), count); + + return count; } |
