This is an automated email from the ASF dual-hosted git repository.

dataroaring pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/master by this push:
     new 00ee11e9f3a [Fix](merge-on-write) Should clear 
`GetDeleteBitmapUpdateLockResponse` when geting delete bitmap update lock fail 
and retry (#44975)
00ee11e9f3a is described below

commit 00ee11e9f3a4018fc0eca686003eafc6ba9486fe
Author: bobhan1 <bao...@selectdb.com>
AuthorDate: Thu Dec 5 10:17:02 2024 +0800

    [Fix](merge-on-write) Should clear `GetDeleteBitmapUpdateLockResponse` when 
geting delete bitmap update lock fail and retry (#44975)
    
    Similar to https://github.com/apache/doris/pull/43261,
    `GetDeleteBitmapUpdateLockResponse` should be cleared after
    `get_delete_bitmap_update_lock` fails on MS. Otherwise BE may get staled
    compaction cnts and wrongly skip to sync rowsets before
    `update_delete_bitmap()` thus causing duplicate keys problem.
---
 cloud/src/meta-service/meta_service_helper.h | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/cloud/src/meta-service/meta_service_helper.h 
b/cloud/src/meta-service/meta_service_helper.h
index 5355ac0eb61..e4ed7e2a231 100644
--- a/cloud/src/meta-service/meta_service_helper.h
+++ b/cloud/src/meta-service/meta_service_helper.h
@@ -118,6 +118,12 @@ void finish_rpc(std::string_view func_name, 
brpc::Controller* ctrl, Response* re
                   << " status=" << res->status().ShortDebugString()
                   << " tablet=" << res->tablet_id()
                   << " delete_bitmap_count=" << 
res->segment_delete_bitmaps_size();
+    } else if constexpr (std::is_same_v<Response, 
GetDeleteBitmapUpdateLockResponse>) {
+        if (res->status().code() != MetaServiceCode::OK) {
+            res->clear_base_compaction_cnts();
+            res->clear_cumulative_compaction_cnts();
+            res->clear_cumulative_points();
+        }
     } else if constexpr (std::is_same_v<Response, GetObjStoreInfoResponse> ||
                          std::is_same_v<Response, GetStageResponse>) {
         std::string debug_string = res->DebugString();


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to