From 8c873fd71c32824a0c4bb5220ca218c1b445a664 Mon Sep 17 00:00:00 2001 From: Vladislav Date: Wed, 27 Dec 2023 12:48:43 +0300 Subject: [PATCH] fix: Invalid key lock strings with squashing (#2341) * fix: clear shard data in squash preparation --- src/server/transaction.cc | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/server/transaction.cc b/src/server/transaction.cc index 798ecd1b5..5a1de1b0a 100644 --- a/src/server/transaction.cc +++ b/src/server/transaction.cc @@ -347,6 +347,9 @@ void Transaction::PrepareSquashedMultiHop(const CommandId* cid, multi_->role = SQUASHER; InitBase(db_index_, {}); + // Because squashing already determines active shards by partitioning commands, + // we don't have to work with keys manually and can just mark active shards. + // The partitioned commands know it's keys and assume they have correct access. DCHECK_EQ(shard_data_.size(), shard_set->size()); for (unsigned i = 0; i < shard_data_.size(); i++) { if (enabled(i)) { @@ -356,6 +359,8 @@ void Transaction::PrepareSquashedMultiHop(const CommandId* cid, } else { shard_data_[i].local_mask &= ~ACTIVE; } + shard_data_[i].arg_start = 0; + shard_data_[i].arg_count = 0; } }