fix update loop bug

This commit is contained in:
mpostma 2021-07-05 09:43:48 +02:00 committed by Tamo
parent 71e1cb472f
commit bc417726fc
No known key found for this signature in database
GPG Key ID: 20CD8020AFA88D69

View File

@ -470,13 +470,6 @@ impl UpdateStore {
txn.commit()?; txn.commit()?;
uuids_to_remove
.iter()
.map(|uuid| update_uuid_to_file_path(&self.path, *uuid))
.for_each(|path| {
let _ = remove_file(path);
});
// If the currently processing update is from our index, we wait until it is // If the currently processing update is from our index, we wait until it is
// finished before returning. This ensure that no write to the index occurs after we delete it. // finished before returning. This ensure that no write to the index occurs after we delete it.
if let State::Processing(uuid, _) = *self.state.read() { if let State::Processing(uuid, _) = *self.state.read() {
@ -486,6 +479,17 @@ impl UpdateStore {
} }
} }
// Finally, remove any outstanding update files. This must be done after waiting for the
// last update to ensure that the update files are not deleted before the update needs
// them.
uuids_to_remove
.iter()
.map(|uuid| update_uuid_to_file_path(&self.path, *uuid))
.for_each(|path| {
let _ = remove_file(path);
});
Ok(()) Ok(())
} }