Loading debian/changelog +3 −1 Original line number Diff line number Diff line mediadb (20260503+3) unstable; urgency=medium mediadb (20260503+4) 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 @@ -15,6 +15,8 @@ mediadb (20260503+3) unstable; urgency=medium * import: disable per-media begin_store/finalize streaming session and force one-shot replicate() path; pre-clean media gid before retries to 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 -- Jan Koester <jan.koester@tuxist.de> Sat, 03 May 2026 17:00:00 +0200 Loading src/app.cpp +4 −0 Original line number Diff line number Diff line Loading @@ -926,6 +926,10 @@ HttpResponse App::handle_cluster_stores(const HttpRequest& req) { HttpResponse App::handle_cluster_sync(const HttpRequest& req) { if (!auth_.is_authorized(req)) return error_json(401, "unauthorized"); if (import_running_.load()) { return error_json(409, "import in progress - sync blocked"); } if (!g_Cluster || !g_Cluster->isRunning()) { return error_json(400, "cluster not enabled"); } Loading src/backend.cpp +4 −0 Original line number Diff line number Diff line Loading @@ -3280,6 +3280,10 @@ void ClusterMediaBackend::sync_from_cluster() { std::cerr << "[CLUSTER-SYNC] cluster not running, skipping sync\n"; return; } if (cluster_.isImportRunning()) { std::cerr << "[CLUSTER-SYNC] global import flag active, skipping sync\n"; return; } if (importing_.load()) { std::cerr << "[CLUSTER-SYNC] import in progress, skipping sync\n"; return; Loading Loading
debian/changelog +3 −1 Original line number Diff line number Diff line mediadb (20260503+3) unstable; urgency=medium mediadb (20260503+4) 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 @@ -15,6 +15,8 @@ mediadb (20260503+3) unstable; urgency=medium * import: disable per-media begin_store/finalize streaming session and force one-shot replicate() path; pre-clean media gid before retries to 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 -- Jan Koester <jan.koester@tuxist.de> Sat, 03 May 2026 17:00:00 +0200 Loading
src/app.cpp +4 −0 Original line number Diff line number Diff line Loading @@ -926,6 +926,10 @@ HttpResponse App::handle_cluster_stores(const HttpRequest& req) { HttpResponse App::handle_cluster_sync(const HttpRequest& req) { if (!auth_.is_authorized(req)) return error_json(401, "unauthorized"); if (import_running_.load()) { return error_json(409, "import in progress - sync blocked"); } if (!g_Cluster || !g_Cluster->isRunning()) { return error_json(400, "cluster not enabled"); } Loading
src/backend.cpp +4 −0 Original line number Diff line number Diff line Loading @@ -3280,6 +3280,10 @@ void ClusterMediaBackend::sync_from_cluster() { std::cerr << "[CLUSTER-SYNC] cluster not running, skipping sync\n"; return; } if (cluster_.isImportRunning()) { std::cerr << "[CLUSTER-SYNC] global import flag active, skipping sync\n"; return; } if (importing_.load()) { std::cerr << "[CLUSTER-SYNC] import in progress, skipping sync\n"; return; Loading