diff --git a/controller/PostgreSQL.cpp b/controller/PostgreSQL.cpp index 8e265da33..ffe9b0f1f 100644 --- a/controller/PostgreSQL.cpp +++ b/controller/PostgreSQL.cpp @@ -710,11 +710,11 @@ void PostgreSQL::initializeNetworks() if (_redisMemberStatus) { fprintf(stderr, "adding networks to redis...\n"); if (_rc->clusterMode) { - auto tx = _cluster->transaction(_myAddressStr, true); + auto tx = _cluster->transaction(_myAddressStr, true, false); tx.sadd(setKey, networkSet.begin(), networkSet.end()); tx.exec(); } else { - auto tx = _redis->transaction(true); + auto tx = _redis->transaction(true, false); tx.sadd(setKey, networkSet.begin(), networkSet.end()); tx.exec(); } @@ -766,13 +766,13 @@ void PostgreSQL::initializeMembers() if (!deletes.empty()) { try { if (_rc->clusterMode) { - auto tx = _cluster->transaction(_myAddressStr, true); + auto tx = _cluster->transaction(_myAddressStr, true, false); for (std::string k : deletes) { tx.del(k); } tx.exec(); } else { - auto tx = _redis->transaction(true); + auto tx = _redis->transaction(true, false); for (std::string k : deletes) { tx.del(k); } @@ -926,13 +926,13 @@ void PostgreSQL::initializeMembers() if (_redisMemberStatus) { fprintf(stderr, "Load member data into redis...\n"); if (_rc->clusterMode) { - auto tx = _cluster->transaction(_myAddressStr, true); + auto tx = _cluster->transaction(_myAddressStr, true, false); for (auto it : networkMembers) { tx.sadd(it.first, it.second); } tx.exec(); } else { - auto tx = _redis->transaction(true); + auto tx = _redis->transaction(true, false); for (auto it : networkMembers) { tx.sadd(it.first, it.second); } @@ -1014,12 +1014,16 @@ void PostgreSQL::heartbeat() } _pool->unborrow(c); - if (_redisMemberStatus) { - if (_rc->clusterMode) { - _cluster->zadd("controllers", "controllerId", ts); - } else { - _redis->zadd("controllers", "controllerId", ts); + try { + if (_redisMemberStatus) { + if (_rc->clusterMode) { + _cluster->zadd("controllers", "controllerId", ts); + } else { + _redis->zadd("controllers", "controllerId", ts); + } } + } catch (sw::redis::Error &e) { + fprintf(stderr, "ERROR: Redis error in heartbeat thread: %s\n", e.what()); } std::this_thread::sleep_for(std::chrono::milliseconds(1000)); @@ -1696,10 +1700,10 @@ void PostgreSQL::onlineNotification_Redis() try { if (!lastOnline.empty()) { if (_rc->clusterMode) { - auto tx = _cluster->transaction(controllerId, true); + auto tx = _cluster->transaction(controllerId, true, false); count = _doRedisUpdate(tx, controllerId, lastOnline); } else { - auto tx = _redis->transaction(true); + auto tx = _redis->transaction(true, false); count = _doRedisUpdate(tx, controllerId, lastOnline); } }