From 8418a9ad7bc39f645f6a82ad3a1cfbc8e9aafeec Mon Sep 17 00:00:00 2001 From: Vitaliy Filippov Date: Sun, 24 May 2026 17:25:47 +0300 Subject: [PATCH] Fix create_root() retries --- src/kv/kv_db.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/kv/kv_db.cpp b/src/kv/kv_db.cpp index 02b7a1a3..ab154b79 100644 --- a/src/kv/kv_db.cpp +++ b/src/kv/kv_db.cpp @@ -1613,6 +1613,7 @@ void kv_op_t::create_root() return; } auto new_offset = db->alloc_block(); + auto new_next = db->next_free; assert(new_offset == 0); auto blk = &db->block_cache[0]; blk->usage = db->usage_counter; @@ -1628,6 +1629,11 @@ void kv_op_t::create_root() if (res == -EINTR) { db->clear_allocation_block(blk->offset); + if (db->next_free == new_next) + { + // When retrying create_root, reset the position + db->next_free = 0; + } auto blk_offset = blk->offset; del_block_level(db, blk); db->block_cache.erase(blk_offset);