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]