fix: big value serialization corner cases (#3430)

There are some problematic flows. First we did not handle deletions, so all sorts of consistency issues could arise while calling DbSlice::Traverse() and DbSlice::Del(). Second, we did not handle FlushAll (same as before, Traverse() preempts and FlushAll() kicks in. Third we did not handle expirations.

---------

Signed-off-by: kostas <kostas@dragonflydb.io>
This commit is contained in:
Kostas Kyrimis 2024-08-11 14:17:32 +03:00 committed by GitHub
parent 41ebb075a1
commit 1c9e9c5922
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
8 changed files with 59 additions and 38 deletions

View file

@ -361,11 +361,6 @@ class UniquePicksGenerator : public PicksGenerator {
absl::BitGen bitgen_{};
};
struct ConditionFlag {
util::fb2::CondVarAny cond_var;
bool flag = false;
};
// Helper class used to guarantee atomicity between serialization of buckets
class ThreadLocalMutex {
public: