From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [IPv6:2a01:7e0:0:424::9]) by lore.proxmox.com (Postfix) with ESMTPS id CE87020EC88 for ; Thu, 25 Apr 2024 11:02:26 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id D7A7E1DD5D; Thu, 25 Apr 2024 11:02:32 +0200 (CEST) From: Hannes Laimer To: pbs-devel@lists.proxmox.com Date: Thu, 25 Apr 2024 11:01:50 +0200 Message-Id: <20240425090150.63500-1-h.laimer@proxmox.com> X-Mailer: git-send-email 2.39.2 MIME-Version: 1.0 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.011 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Subject: [pbs-devel] [PATCH proxmox-backup v2] datastore: fix problem with operations counting X-BeenThere: pbs-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox Backup Server development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Proxmox Backup Server development discussion Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: pbs-devel-bounces@lists.proxmox.com Sender: "pbs-devel" ... if `.chunks/` is not available(deleted/moved) ChunkStore::open fails, but that would happen after updating the active operations on the datastore, so no reference that could be dropped is returned. Leading to the operations counter to always increase. This only updates the counter when a reference is returned, not before. Signed-off-by: Hannes Laimer --- pbs-datastore/src/datastore.rs | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/pbs-datastore/src/datastore.rs b/pbs-datastore/src/datastore.rs index f95da761..5e2208bc 100644 --- a/pbs-datastore/src/datastore.rs +++ b/pbs-datastore/src/datastore.rs @@ -158,13 +158,6 @@ impl DataStore { } } - if let Some(operation) = operation { - update_active_operations(name, operation, 1)?; - } - - // Our operation is registered, unlock the config. - drop(config_lock); - let mut datastore_cache = DATASTORE_MAP.lock().unwrap(); let entry = datastore_cache.get(name); @@ -172,6 +165,9 @@ impl DataStore { let chunk_store = if let Some(datastore) = &entry { let last_digest = datastore.last_digest.as_ref(); if let Some(true) = last_digest.map(|last_digest| last_digest == &digest) { + if let Some(operation) = operation { + update_active_operations(name, operation, 1)?; + } return Ok(Arc::new(Self { inner: Arc::clone(datastore), operation, @@ -195,6 +191,10 @@ impl DataStore { let datastore = Arc::new(datastore); datastore_cache.insert(name.to_string(), datastore.clone()); + if let Some(operation) = operation { + update_active_operations(name, operation, 1)?; + } + Ok(Arc::new(Self { inner: datastore, operation, -- 2.39.2 _______________________________________________ pbs-devel mailing list pbs-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel