mirror of
https://github.com/dragonflydb/dragonfly.git
synced 2025-05-11 10:25:47 +02:00
fix: properly clean tiered state upon flash (#3281)
* fix: properly clean tiered state upon flash The bug was around io pending entries that have not been properly cleaned during flush. This PR simplified the logic around tiered storage handling during flush, it always performs the cleaning in the synchronous part of the command. In addition, this PR improves error logging in tests if dragonfly process exits with an error. Finally, a test is added that makes sure pending tiered items are flushed during the flash call. Fixes #3252 --------- Signed-off-by: Roman Gershman <roman@dragonflydb.io>
This commit is contained in:
parent
4fd6ba68a2
commit
fba902d0ac
11 changed files with 150 additions and 107 deletions
|
@ -494,10 +494,8 @@ class DbSlice {
|
|||
// Invalidate all watched keys for given slots. Used on FlushSlots.
|
||||
void InvalidateSlotWatches(const cluster::SlotSet& slot_ids);
|
||||
|
||||
// Properly clear db_arr before deleting it. If async is set, it's called from a detached fiber
|
||||
// after swapping the db.
|
||||
void ClearEntriesOnFlush(absl::Span<const DbIndex> indices, const DbTableArray& db_arr,
|
||||
bool async);
|
||||
// Clear tiered storage entries for the specified indices.
|
||||
void ClearOffloadedEntries(absl::Span<const DbIndex> indices, const DbTableArray& db_arr);
|
||||
|
||||
void PerformDeletion(Iterator del_it, ExpIterator exp_it, DbTable* table);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue