Skip to content

Commit

Permalink
fix(storage-manager): race condition on latest_updates structure (#…
Browse files Browse the repository at this point in the history
…1399)

Signed-off-by: Julien Loudet <[email protected]>
  • Loading branch information
J-Loudet authored Sep 11, 2024
1 parent 717e005 commit 31b3183
Showing 1 changed file with 4 additions and 7 deletions.
11 changes: 4 additions & 7 deletions plugins/zenoh-plugin-storage-manager/src/replica/storage.rs
Original file line number Diff line number Diff line change
Expand Up @@ -359,10 +359,9 @@ impl StorageService {

// If the Storage was declared as only keeping the Latest value, we ensure that, for
// each received Sample, it is indeed the Latest value that is processed.
let mut latest_updates_guard = self.latest_updates.lock().await;
if self.capability.history == History::Latest {
if let Some(stored_timestamp) =
self.latest_updates.lock().await.get(&stripped_key)
{
if let Some(stored_timestamp) = latest_updates_guard.get(&stripped_key) {
if sample_to_store_timestamp < *stored_timestamp {
tracing::debug!(
"Skipping Sample for < {:?} >, a Value with a more recent \
Expand Down Expand Up @@ -407,11 +406,9 @@ impl StorageService {
// track of the Latest value, the timestamp is indeed more recent (it was
// checked before being processed): we update our internal structure.
if self.capability.history == History::Latest {
self.latest_updates
.lock()
.await
.insert(stripped_key, sample_to_store_timestamp);
latest_updates_guard.insert(stripped_key, sample_to_store_timestamp);
}
drop(latest_updates_guard);

if let Some(replication) = &self.replication {
if let Err(e) = replication
Expand Down

0 comments on commit 31b3183

Please sign in to comment.