diff --git a/core/src/volume/manager.rs b/core/src/volume/manager.rs index 98dcb78fa..ffe13caa3 100644 --- a/core/src/volume/manager.rs +++ b/core/src/volume/manager.rs @@ -736,9 +736,12 @@ impl VolumeManager { || old_info.total_bytes_available != new_info.total_bytes_available || old_info.error_status != new_info.error_status { - // Update the volume - preserve existing ID for cache stability + // Update the volume - prefer DB UUID for stability, fall back to cache ID let mut updated_volume = detected.clone(); - updated_volume.id = existing.id; + updated_volume.id = tracked_volumes_map + .get(&fingerprint) + .map(|(_, db_uuid, ..)| *db_uuid) + .unwrap_or(existing.id); updated_volume.update_info(new_info.clone()); current_volumes.insert(fingerprint.clone(), updated_volume.clone());