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 c31b1e9da0c [Fix](cloud-mow) Fix wrong tablet_id in delete bitmap 
(#55771)
c31b1e9da0c is described below

commit c31b1e9da0c4d0e57719732a063c27b3199d54c4
Author: bobhan1 <[email protected]>
AuthorDate: Mon Sep 15 19:15:45 2025 +0800

    [Fix](cloud-mow) Fix wrong tablet_id in delete bitmap (#55771)
    
    ### What problem does this PR solve?
    
    1. fix wrong tablet_id in `DeleteBitmap`
    ```cpp
    Status CloudMetaMgr::get_tablet_meta(int64_t tablet_id, 
TabletMetaSharedPtr* tablet_meta) {
        // ...
        *tablet_meta = std::make_shared<TabletMeta>();
        (*tablet_meta)
                
->init_from_pb(cloud_tablet_meta_to_doris(std::move(*resp.mutable_tablet_meta())));
        VLOG_DEBUG << "get tablet meta, tablet_id: " << 
(*tablet_meta)->tablet_id();
        // tablet_meta._delete_bitmap._tablet_id is always 0
        return Status::OK();
    }
    
    TabletMeta::TabletMeta()
            : _tablet_uid(0, 0),
              _schema(new TabletSchema),
              _delete_bitmap(new DeleteBitmap(_tablet_id)) {}
    ```
    2. fix https://github.com/apache/doris/pull/55073,
    https://github.com/apache/doris/pull/55733 case stuck due to not sending
    reply
---
 be/src/http/action/delete_bitmap_action.cpp              |  8 ++++++++
 be/src/olap/tablet_meta.cpp                              |  5 +++++
 be/src/olap/tablet_meta.h                                |  2 ++
 .../suites/metrics_p0/test_delete_bitmap_metrics.groovy  | 16 ++++++++--------
 4 files changed, 23 insertions(+), 8 deletions(-)

diff --git a/be/src/http/action/delete_bitmap_action.cpp 
b/be/src/http/action/delete_bitmap_action.cpp
index 581da9204ac..d4bdb5252ce 100644
--- a/be/src/http/action/delete_bitmap_action.cpp
+++ b/be/src/http/action/delete_bitmap_action.cpp
@@ -242,6 +242,14 @@ void DeleteBitmapAction::handle(HttpRequest* req) {
         } else {
             HttpChannel::send_reply(req, HttpStatus::OK, json_result);
         }
+    } else if (_delete_bitmap_action_type == 
DeleteBitmapActionType::COUNT_AGG_CACHE) {
+        std::string json_result;
+        Status st = _handle_show_agg_cache_delete_bitmap_count(req, 
&json_result);
+        if (!st.ok()) {
+            HttpChannel::send_reply(req, HttpStatus::OK, st.to_json());
+        } else {
+            HttpChannel::send_reply(req, HttpStatus::OK, json_result);
+        }
     }
 }
 
diff --git a/be/src/olap/tablet_meta.cpp b/be/src/olap/tablet_meta.cpp
index 2e23df028ff..d150351cd92 100644
--- a/be/src/olap/tablet_meta.cpp
+++ b/be/src/olap/tablet_meta.cpp
@@ -744,6 +744,7 @@ void TabletMeta::init_from_pb(const TabletMetaPB& 
tablet_meta_pb) {
 
     if (tablet_meta_pb.has_enable_unique_key_merge_on_write()) {
         _enable_unique_key_merge_on_write = 
tablet_meta_pb.enable_unique_key_merge_on_write();
+        _delete_bitmap->set_tablet_id(_tablet_id);
     }
 
     // init _rs_metas
@@ -1618,6 +1619,10 @@ DeleteBitmap DeleteBitmap::agg_cache_snapshot() {
     return DeleteBitmapAggCache::instance()->snapshot(_tablet_id);
 }
 
+void DeleteBitmap::set_tablet_id(int64_t tablet_id) {
+    _tablet_id = tablet_id;
+}
+
 std::shared_ptr<roaring::Roaring> DeleteBitmap::get_agg(const BitmapKey& bmk) 
const {
     std::string key_str = agg_cache_key(_tablet_id, bmk); // Cache key 
container
     CacheKey key(key_str);
diff --git a/be/src/olap/tablet_meta.h b/be/src/olap/tablet_meta.h
index 5d7690c3973..6101a96f5cf 100644
--- a/be/src/olap/tablet_meta.h
+++ b/be/src/olap/tablet_meta.h
@@ -602,6 +602,8 @@ public:
 
     DeleteBitmap agg_cache_snapshot();
 
+    void set_tablet_id(int64_t tablet_id);
+
 private:
     DeleteBitmap::Version _get_rowset_cache_version(const BitmapKey& bmk) 
const;
 
diff --git 
a/regression-test/suites/metrics_p0/test_delete_bitmap_metrics.groovy 
b/regression-test/suites/metrics_p0/test_delete_bitmap_metrics.groovy
index a158e94c71a..a74d5ffb6e4 100644
--- a/regression-test/suites/metrics_p0/test_delete_bitmap_metrics.groovy
+++ b/regression-test/suites/metrics_p0/test_delete_bitmap_metrics.groovy
@@ -207,16 +207,16 @@ suite("test_delete_bitmap_metrics", "p0") {
                 logger.info("ms_delete_bitmap_cardinality:" + 
ms_delete_bitmap_cardinality)
                 assertTrue(ms_delete_bitmap_count == 7)
                 assertTrue(ms_delete_bitmap_cardinality == 7)
+            }
 
-                // def status = 
getAggCacheDeleteBitmapStatus(backendId_to_backendIP[trigger_backend_id], 
backendId_to_backendHttpPort[trigger_backend_id], tablet_id)
-                // logger.info("agg cache status: ${status}")
-                // assert status.delete_bitmap_count == 8
-                // assert status.cardinality == 7
-                // assert status.size > 0
+            def status = 
getAggCacheDeleteBitmapStatus(backendId_to_backendIP[trigger_backend_id], 
backendId_to_backendHttpPort[trigger_backend_id], tablet_id)
+            logger.info("agg cache status: ${status}")
+            assert status.delete_bitmap_count == 8
+            assert status.cardinality == 7
+            assert status.size > 0
 
-                // status = 
getAggCacheDeleteBitmapStatus(backendId_to_backendIP[trigger_backend_id], 
backendId_to_backendHttpPort[trigger_backend_id], tablet_id, true)
-                // logger.info("agg cache verbose status: ${status}")
-            }
+            status = 
getAggCacheDeleteBitmapStatus(backendId_to_backendIP[trigger_backend_id], 
backendId_to_backendHttpPort[trigger_backend_id], tablet_id, true)
+            logger.info("agg cache verbose status: ${status}")
 
             def tablet_delete_bitmap_count = 0;
             def base_rowset_delete_bitmap_count = 0;


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to