Loading src/cluster.cpp +6 −33 Changes for src/cluster.cpp: 6 added lines, 33 removed lines. Original line number Diff line number Diff line Loading @@ -582,7 +582,12 @@ namespace authdb { out.clear(); std::set<std::string> seen_sids; auto tryDeserialize = [&](const std::vector<uint8_t> &data) { // Enumerate dedicated session store only (memory-only, contains only sessions). // Peer sessions are already imported here via pushSession replication. auto groups = session_store_->list_groups(); for (uint64_t gid : groups) { std::vector<uint8_t> data; if (session_store_->fetch(gid, 0, data)) { SessionInfo info; if (SessionBlock::deserialize(data, info.sid, info.uid, info.did, info.members, info.username, info.gpo_results)) { Loading @@ -592,38 +597,6 @@ namespace authdb { out.push_back(std::move(info)); } } }; // Enumerate dedicated session store (contains only sessions) auto groups = session_store_->list_groups(); for (uint64_t gid : groups) { std::vector<uint8_t> data; if (session_store_->fetch(gid, 0, data)) { tryDeserialize(data); } } // Enumerate each peer node for sessions we haven't seen if (pclient_) { for (size_t ni = 0; ni < cfg_.peers.size(); ni++) { try { std::vector<uint64_t> pgroups; { std::unique_lock<std::timed_mutex> lock(client_mutex_, std::chrono::seconds(5)); if (!lock.owns_lock()) continue; if (!pclient_->list_groups_on_node(ni, pgroups)) continue; } for (uint64_t gid : pgroups) { std::vector<uint8_t> data; std::unique_lock<std::timed_mutex> lock(client_mutex_, std::chrono::seconds(5)); if (!lock.owns_lock()) break; if (pclient_->fetch_from_peers(gid, 0, data) && !data.empty()) { tryDeserialize(data); } } } catch (...) { continue; } } } } Loading Loading
src/cluster.cpp +6 −33 Changes for src/cluster.cpp: 6 added lines, 33 removed lines. Original line number Diff line number Diff line Loading @@ -582,7 +582,12 @@ namespace authdb { out.clear(); std::set<std::string> seen_sids; auto tryDeserialize = [&](const std::vector<uint8_t> &data) { // Enumerate dedicated session store only (memory-only, contains only sessions). // Peer sessions are already imported here via pushSession replication. auto groups = session_store_->list_groups(); for (uint64_t gid : groups) { std::vector<uint8_t> data; if (session_store_->fetch(gid, 0, data)) { SessionInfo info; if (SessionBlock::deserialize(data, info.sid, info.uid, info.did, info.members, info.username, info.gpo_results)) { Loading @@ -592,38 +597,6 @@ namespace authdb { out.push_back(std::move(info)); } } }; // Enumerate dedicated session store (contains only sessions) auto groups = session_store_->list_groups(); for (uint64_t gid : groups) { std::vector<uint8_t> data; if (session_store_->fetch(gid, 0, data)) { tryDeserialize(data); } } // Enumerate each peer node for sessions we haven't seen if (pclient_) { for (size_t ni = 0; ni < cfg_.peers.size(); ni++) { try { std::vector<uint64_t> pgroups; { std::unique_lock<std::timed_mutex> lock(client_mutex_, std::chrono::seconds(5)); if (!lock.owns_lock()) continue; if (!pclient_->list_groups_on_node(ni, pgroups)) continue; } for (uint64_t gid : pgroups) { std::vector<uint8_t> data; std::unique_lock<std::timed_mutex> lock(client_mutex_, std::chrono::seconds(5)); if (!lock.owns_lock()) break; if (pclient_->fetch_from_peers(gid, 0, data) && !data.empty()) { tryDeserialize(data); } } } catch (...) { continue; } } } } Loading