From 94dde686bbed16b13bbfe28e284fd9dc0184bd07 Mon Sep 17 00:00:00 2001 From: Vamsi Ponnekanti Date: Wed, 13 Nov 2013 14:50:29 -0800 Subject: [PATCH] [Merge operand meant for key K is being applied on wrong key] Summary: We iterate until we find a different key than original key. ikey is pointing to next key when we break out of loop. After the loop we apply all merge operands meant for original key on the next key! Test Plan: Need to give a build to Marcin to test out. Revert Plan: OK Task ID: #3181932 Reviewers: haobo, emayanke, dhruba Reviewed By: haobo CC: leveldb Differential Revision: https://reviews.facebook.net/D14073 --- db/merge_helper.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/db/merge_helper.cc b/db/merge_helper.cc index 7f5f73ab1f..9d757a5e69 100644 --- a/db/merge_helper.cc +++ b/db/merge_helper.cc @@ -175,7 +175,7 @@ void MergeHelper::MergeUntil(Iterator* iter, SequenceNumber stop_before, assert(kTypeMerge == orig_ikey.type); assert(operands_.size() >= 1); assert(operands_.size() == keys_.size()); - success_ = user_merge_operator_->FullMerge(ikey.user_key, nullptr, + success_ = user_merge_operator_->FullMerge(orig_ikey.user_key, nullptr, operands_, &merge_result, logger_);