Commit 9d7cbb57 authored by jan.koester's avatar jan.koester
Browse files

test

parent 5d48359a
Loading
Loading
Loading
Loading
+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)
@@ -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

+4 −0
Original line number Diff line number Diff line
@@ -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");
    }
+4 −0
Original line number Diff line number Diff line
@@ -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;