Loading debian/changelog +3 −1 Original line number Diff line number Diff line mediadb (20260503+4) unstable; urgency=medium mediadb (20260503+5) unstable; urgency=medium * cluster: recreate import_client_ on retry to reset paritypp node error counters when cluster recovers (reset_import_client vs warmup-only) Loading @@ -17,6 +17,8 @@ mediadb (20260503+4) unstable; urgency=medium recover from broken partial groups * sync: block sync_from_cluster while global import flag is active; also block /api/cluster/sync during import to avoid import/sync races * cluster: always log replicate/replicate_import exception details (key, gid, size, error) in release builds for timeout diagnosis -- Jan Koester <jan.koester@tuxist.de> Sat, 03 May 2026 17:00:00 +0200 Loading src/cluster.cpp +12 −4 Original line number Diff line number Diff line Loading @@ -246,10 +246,14 @@ bool Cluster::replicate(const std::string& key, const uint8_t* data, size_t len) pclient_->store(gid, data, len); DBG_LOG("[CLUSTER] replicate key=" << key << " store done\n"); } catch (const netplus::NetException& e) { DBG_LOG("[CLUSTER] replicate NetException key=" << key << ": " << e.what() << "\n"); std::cerr << "[CLUSTER] replicate NetException key=" << key << " gid=" << gid << " size=" << len << ": " << e.what() << "\n"; return false; } catch (const std::exception& e) { DBG_LOG("[CLUSTER] replicate exception key=" << key << ": " << e.what() << "\n"); std::cerr << "[CLUSTER] replicate exception key=" << key << " gid=" << gid << " size=" << len << ": " << e.what() << "\n"; return false; } return true; Loading @@ -264,10 +268,14 @@ bool Cluster::replicate_import(const std::string& key, const uint8_t* data, size import_client_->store(gid, data, len); DBG_LOG("[CLUSTER] replicate_import key=" << key << " store done\n"); } catch (const netplus::NetException& e) { DBG_LOG("[CLUSTER] replicate_import NetException key=" << key << ": " << e.what() << "\n"); std::cerr << "[CLUSTER] replicate_import NetException key=" << key << " gid=" << gid << " size=" << len << ": " << e.what() << "\n"; return false; } catch (const std::exception& e) { DBG_LOG("[CLUSTER] replicate_import exception key=" << key << ": " << e.what() << "\n"); std::cerr << "[CLUSTER] replicate_import exception key=" << key << " gid=" << gid << " size=" << len << ": " << e.what() << "\n"; return false; } return true; Loading Loading
debian/changelog +3 −1 Original line number Diff line number Diff line mediadb (20260503+4) unstable; urgency=medium mediadb (20260503+5) unstable; urgency=medium * cluster: recreate import_client_ on retry to reset paritypp node error counters when cluster recovers (reset_import_client vs warmup-only) Loading @@ -17,6 +17,8 @@ mediadb (20260503+4) unstable; urgency=medium recover from broken partial groups * sync: block sync_from_cluster while global import flag is active; also block /api/cluster/sync during import to avoid import/sync races * cluster: always log replicate/replicate_import exception details (key, gid, size, error) in release builds for timeout diagnosis -- Jan Koester <jan.koester@tuxist.de> Sat, 03 May 2026 17:00:00 +0200 Loading
src/cluster.cpp +12 −4 Original line number Diff line number Diff line Loading @@ -246,10 +246,14 @@ bool Cluster::replicate(const std::string& key, const uint8_t* data, size_t len) pclient_->store(gid, data, len); DBG_LOG("[CLUSTER] replicate key=" << key << " store done\n"); } catch (const netplus::NetException& e) { DBG_LOG("[CLUSTER] replicate NetException key=" << key << ": " << e.what() << "\n"); std::cerr << "[CLUSTER] replicate NetException key=" << key << " gid=" << gid << " size=" << len << ": " << e.what() << "\n"; return false; } catch (const std::exception& e) { DBG_LOG("[CLUSTER] replicate exception key=" << key << ": " << e.what() << "\n"); std::cerr << "[CLUSTER] replicate exception key=" << key << " gid=" << gid << " size=" << len << ": " << e.what() << "\n"; return false; } return true; Loading @@ -264,10 +268,14 @@ bool Cluster::replicate_import(const std::string& key, const uint8_t* data, size import_client_->store(gid, data, len); DBG_LOG("[CLUSTER] replicate_import key=" << key << " store done\n"); } catch (const netplus::NetException& e) { DBG_LOG("[CLUSTER] replicate_import NetException key=" << key << ": " << e.what() << "\n"); std::cerr << "[CLUSTER] replicate_import NetException key=" << key << " gid=" << gid << " size=" << len << ": " << e.what() << "\n"; return false; } catch (const std::exception& e) { DBG_LOG("[CLUSTER] replicate_import exception key=" << key << ": " << e.what() << "\n"); std::cerr << "[CLUSTER] replicate_import exception key=" << key << " gid=" << gid << " size=" << len << ": " << e.what() << "\n"; return false; } return true; Loading