Loading debian/changelog +10 −8 Original line number Diff line number Diff line mediadb (20260419+39) unstable; urgency=critical * Fix root cause of missing stores/index after import: replicate_index() had an initial_sync_ok_ guard that silently dropped index replication whenever a node hadn't completed sync_from_cluster first. This meant create_store, add_media, and all CRUD operations never pushed the index to the cluster on a fresh node or after restart. Removed the guard; the empty-index check (local_count == 0) is sufficient protection. * Fix import hang: removed the post-import verification phase that fetched every media blob from the cluster to check shard counts. This blocked all API requests (including the status page) because it held cluster_op_mutex_ exclusively during potentially slow network I/O. The periodic repair_replication() handles under-replicated keys instead. * Fix stuck importing_ flag: now uses RAII guard so importing_ is always cleared on exit, even on exceptions. * Simplify replicate_index() guard: removed cluster_.fetch("index") call that could itself hang. Now uses simple initial_sync_ok_ check instead. every media blob from the cluster under exclusive lock. * Fix stuck importing_ flag: RAII guard ensures it's always cleared. * Add cluster_import_roundtrip unit test that verifies the full export → import → fetch → sync_from_cluster cycle. -- Jan Koester <jan.koester@tuxist.de> Sat, 19 Apr 2026 00:00:00 +0200 Loading Loading
debian/changelog +10 −8 Original line number Diff line number Diff line mediadb (20260419+39) unstable; urgency=critical * Fix root cause of missing stores/index after import: replicate_index() had an initial_sync_ok_ guard that silently dropped index replication whenever a node hadn't completed sync_from_cluster first. This meant create_store, add_media, and all CRUD operations never pushed the index to the cluster on a fresh node or after restart. Removed the guard; the empty-index check (local_count == 0) is sufficient protection. * Fix import hang: removed the post-import verification phase that fetched every media blob from the cluster to check shard counts. This blocked all API requests (including the status page) because it held cluster_op_mutex_ exclusively during potentially slow network I/O. The periodic repair_replication() handles under-replicated keys instead. * Fix stuck importing_ flag: now uses RAII guard so importing_ is always cleared on exit, even on exceptions. * Simplify replicate_index() guard: removed cluster_.fetch("index") call that could itself hang. Now uses simple initial_sync_ok_ check instead. every media blob from the cluster under exclusive lock. * Fix stuck importing_ flag: RAII guard ensures it's always cleared. * Add cluster_import_roundtrip unit test that verifies the full export → import → fetch → sync_from_cluster cycle. -- Jan Koester <jan.koester@tuxist.de> Sat, 19 Apr 2026 00:00:00 +0200 Loading