diff --git a/src/server/hll_family.cc b/src/server/hll_family.cc index d0c1f6d33..a16afd430 100644 --- a/src/server/hll_family.cc +++ b/src/server/hll_family.cc @@ -255,14 +255,14 @@ OpResult PFMergeInternal(CmdArgList args, Transaction* tx, SinkReplyBuilder if (result.ok()) { hlls[sid] = std::move(result.value()); } else { - success = false; + success.store(false, memory_order_relaxed); } - return result.status(); + return OpStatus::OK; }; tx->Execute(std::move(cb), false); - if (!success) { + if (!success.load(memory_order_relaxed)) { tx->Conclude(); return OpStatus::INVALID_VALUE; } diff --git a/src/server/hll_family_test.cc b/src/server/hll_family_test.cc index 4b52924da..752c640ca 100644 --- a/src/server/hll_family_test.cc +++ b/src/server/hll_family_test.cc @@ -194,11 +194,12 @@ TEST_F(HllFamilyTest, MergeOverlapping) { } TEST_F(HllFamilyTest, MergeInvalid) { - GTEST_SKIP() << "TBD: MergeInvalid test fails with multi-shard runs, see #5004"; + Run({"exists", "key1", "key4"}); + ASSERT_EQ(GetDebugInfo().shards_count, 2); // ensure 2 shards EXPECT_EQ(CheckedInt({"pfadd", "key1", "1", "2", "3"}), 1); - EXPECT_EQ(Run({"set", "key2", "..."}), "OK"); - EXPECT_THAT(Run({"pfmerge", "key1", "key2"}), ErrArg(HllFamily::kInvalidHllErr)); + EXPECT_EQ(Run({"set", "key4", "..."}), "OK"); + EXPECT_THAT(Run({"pfmerge", "key1", "key4"}), ErrArg(HllFamily::kInvalidHllErr)); EXPECT_EQ(CheckedInt({"pfcount", "key1"}), 3); }