From a9581f0739dd387cc1409779943292adef893276 Mon Sep 17 00:00:00 2001 From: Vitaliy Filippov Date: Fri, 21 Apr 2023 00:50:25 +0300 Subject: [PATCH] Handle dirty deletes during read correctly O_o --- src/blockstore_read.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/blockstore_read.cpp b/src/blockstore_read.cpp index 7fec5add..cd2f64e4 100644 --- a/src/blockstore_read.cpp +++ b/src/blockstore_read.cpp @@ -142,12 +142,16 @@ int blockstore_impl_t::dequeue_read(blockstore_op_t *read_op) bool version_ok = !IS_IN_FLIGHT(dirty.state) && read_op->version >= dirty_it->first.version; if (IS_SYNCED(dirty.state)) { - if (!version_ok && read_op->version != 0) - read_op->version = dirty_it->first.version; version_ok = true; } if (version_ok) { + if (IS_DELETE(dirty.state)) + { + assert(!result_version); + clean_found = false; + break; + } if (!result_version) { result_version = dirty_it->first.version;