From 8005968ec5b72770605758de2e17eecf7f32c833 Mon Sep 17 00:00:00 2001 From: Eric Coissac Date: Wed, 25 Mar 2026 12:47:59 +0100 Subject: [PATCH] Reorder commit and metadata count logic Move `tx.commit()?` after counting metadata rows under the old lazy_pk to ensure accurate count before commit. This fixes a potential race or inconsistency where metadata might be updated after commit, leading to incorrect logging of remaining rows under lazy_pk. --- pmocache/src/db.rs | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/pmocache/src/db.rs b/pmocache/src/db.rs index 4a49dc8d..509000c2 100644 --- a/pmocache/src/db.rs +++ b/pmocache/src/db.rs @@ -1137,17 +1137,17 @@ impl DB { return Err(Error::QueryReturnedNoRows); } - tx.commit()?; - - // Compter les métadonnées encore sous l'ancien lazy_pk (après migration de l'asset) - let meta_under_lazy: i64 = { - let conn = self.lock_conn("update_lazy_to_downloaded_meta_check"); - conn.query_row( + // Compter les métadonnées encore sous l'ancien lazy_pk avant le commit + let meta_under_lazy: i64 = tx + .query_row( "SELECT COUNT(*) FROM metadata WHERE pk = ?1", [lazy_pk], |r| r.get(0), - ).unwrap_or(0) - }; + ) + .unwrap_or(0); + + tx.commit()?; + tracing::debug!( "update_lazy_to_downloaded: {} → {} ({} metadata rows still under lazy_pk)", lazy_pk, real_pk, meta_under_lazy