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

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


The following commit(s) were added to refs/heads/branch-3.0 by this push:
     new 4a342ef421b branch-3.0: [Opt](mow) Add more logs for mow delete bitmap 
#49752 (#50321)
4a342ef421b is described below

commit 4a342ef421b435dfef29237ef8b3f58cdad01f16
Author: github-actions[bot] 
<41898282+github-actions[bot]@users.noreply.github.com>
AuthorDate: Tue May 6 09:25:02 2025 +0800

    branch-3.0: [Opt](mow) Add more logs for mow delete bitmap #49752 (#50321)
    
    Cherry-picked from #49752
    
    Co-authored-by: bobhan1 <[email protected]>
---
 be/src/cloud/cloud_tablet.cpp               |  6 ++++++
 be/src/olap/rowset/beta_rowset_reader.cpp   | 27 +++++++++++++++++----------
 be/src/olap/tablet.cpp                      |  6 ++++++
 be/src/olap/tablet_meta.cpp                 |  5 +++++
 be/src/pipeline/exec/olap_scan_operator.cpp |  6 ++++++
 be/src/vec/exec/scan/new_olap_scanner.cpp   |  5 +++++
 6 files changed, 45 insertions(+), 10 deletions(-)

diff --git a/be/src/cloud/cloud_tablet.cpp b/be/src/cloud/cloud_tablet.cpp
index c5b29cabd9e..dd43079ed9f 100644
--- a/be/src/cloud/cloud_tablet.cpp
+++ b/be/src/cloud/cloud_tablet.cpp
@@ -390,6 +390,9 @@ void CloudTablet::delete_rowsets(const 
std::vector<RowsetSharedPtr>& to_delete,
 }
 
 uint64_t CloudTablet::delete_expired_stale_rowsets() {
+    if (config::enable_mow_verbose_log) {
+        LOG_INFO("begin delete_expired_stale_rowset for tablet={}", 
tablet_id());
+    }
     std::vector<RowsetSharedPtr> expired_rowsets;
     // ATTN: trick, Use stale_rowsets to temporarily increase the reference 
count of the rowset shared pointer in _stale_rs_version_map so that in the 
recycle_cached_data function, it checks if the reference count is 2.
     std::vector<RowsetSharedPtr> stale_rowsets;
@@ -441,6 +444,9 @@ uint64_t CloudTablet::delete_expired_stale_rowsets() {
     }
     
_tablet_meta->delete_bitmap().remove_stale_delete_bitmap_from_queue(version_to_delete);
     recycle_cached_data(expired_rowsets);
+    if (config::enable_mow_verbose_log) {
+        LOG_INFO("finish delete_expired_stale_rowset for tablet={}", 
tablet_id());
+    }
     return expired_rowsets.size();
 }
 
diff --git a/be/src/olap/rowset/beta_rowset_reader.cpp 
b/be/src/olap/rowset/beta_rowset_reader.cpp
index cd3994ec072..cca8da82637 100644
--- a/be/src/olap/rowset/beta_rowset_reader.cpp
+++ b/be/src/olap/rowset/beta_rowset_reader.cpp
@@ -154,17 +154,24 @@ Status 
BetaRowsetReader::get_segment_iterators(RowsetReaderContext* read_context
     // Take a delete-bitmap for each segment, the bitmap contains all deletes
     // until the max read version, which is read_context->version.second
     if (_read_context->delete_bitmap != nullptr) {
-        SCOPED_RAW_TIMER(&_stats->delete_bitmap_get_agg_ns);
-        RowsetId rowset_id = rowset()->rowset_id();
-        for (uint32_t seg_id = 0; seg_id < rowset()->num_segments(); ++seg_id) 
{
-            auto d = _read_context->delete_bitmap->get_agg(
-                    {rowset_id, seg_id, _read_context->version.second});
-            if (d->isEmpty()) {
-                continue; // Empty delete bitmap for the segment
+        {
+            SCOPED_RAW_TIMER(&_stats->delete_bitmap_get_agg_ns);
+            RowsetId rowset_id = rowset()->rowset_id();
+            for (uint32_t seg_id = 0; seg_id < rowset()->num_segments(); 
++seg_id) {
+                auto d = _read_context->delete_bitmap->get_agg(
+                        {rowset_id, seg_id, _read_context->version.second});
+                if (d->isEmpty()) {
+                    continue; // Empty delete bitmap for the segment
+                }
+                VLOG_TRACE << "Get the delete bitmap for rowset: " << 
rowset_id.to_string()
+                           << ", segment id:" << seg_id << ", size:" << 
d->cardinality();
+                _read_options.delete_bitmap.emplace(seg_id, std::move(d));
             }
-            VLOG_TRACE << "Get the delete bitmap for rowset: " << 
rowset_id.to_string()
-                       << ", segment id:" << seg_id << ", size:" << 
d->cardinality();
-            _read_options.delete_bitmap.emplace(seg_id, std::move(d));
+        }
+        if (config::enable_mow_verbose_log) {
+            LOG_INFO("get aggregated delete bitmap for rowset={}, tablet={}, 
cost={}ns",
+                     rowset()->rowset_id().to_string(), 
rowset()->rowset_meta()->tablet_id(),
+                     _stats->delete_bitmap_get_agg_ns);
         }
     }
 
diff --git a/be/src/olap/tablet.cpp b/be/src/olap/tablet.cpp
index 958dcb8ce13..f3d1917e66a 100644
--- a/be/src/olap/tablet.cpp
+++ b/be/src/olap/tablet.cpp
@@ -697,6 +697,9 @@ void Tablet::_delete_stale_rowset_by_version(const Version& 
version) {
 }
 
 void Tablet::delete_expired_stale_rowset() {
+    if (config::enable_mow_verbose_log) {
+        LOG_INFO("begin delete_expired_stale_rowset for tablet={}", 
tablet_id());
+    }
     int64_t now = UnixSeconds();
     // hold write lock while processing stable rowset
     {
@@ -855,6 +858,9 @@ void Tablet::delete_expired_stale_rowset() {
         save_meta();
     }
 #endif
+    if (config::enable_mow_verbose_log) {
+        LOG_INFO("finish delete_expired_stale_rowset for tablet={}", 
tablet_id());
+    }
 }
 
 Status Tablet::capture_consistent_versions_unlocked(const Version& 
spec_version,
diff --git a/be/src/olap/tablet_meta.cpp b/be/src/olap/tablet_meta.cpp
index 165ccb303d6..5516196641d 100644
--- a/be/src/olap/tablet_meta.cpp
+++ b/be/src/olap/tablet_meta.cpp
@@ -953,6 +953,11 @@ void TabletMeta::delete_stale_rs_meta_by_version(const 
Version& version) {
                                        {(*it)->rowset_id(), UINT32_MAX, 0});
                 rowset_cache_version_size =
                         
delete_bitmap().remove_rowset_cache_version((*it)->rowset_id());
+                if (config::enable_mow_verbose_log) {
+                    LOG_INFO(
+                            "delete stale rowset's delete bitmap. tablet={}, 
version={}, rowset={}",
+                            tablet_id(), version.to_string(), 
(*it)->rowset_id().to_string());
+                }
             }
             it = _stale_rs_metas.erase(it);
         } else {
diff --git a/be/src/pipeline/exec/olap_scan_operator.cpp 
b/be/src/pipeline/exec/olap_scan_operator.cpp
index 17560cb0184..ad4892ef513 100644
--- a/be/src/pipeline/exec/olap_scan_operator.cpp
+++ b/be/src/pipeline/exec/olap_scan_operator.cpp
@@ -505,6 +505,12 @@ Status OlapScanLocalState::hold_tablets() {
         if (!PipelineXLocalState<>::_state->skip_delete_predicate()) {
             _read_sources[i].fill_delete_predicates();
         }
+        if (config::enable_mow_verbose_log &&
+            _tablets[i].tablet->enable_unique_key_merge_on_write()) {
+            LOG_INFO("finish capture_rs_readers for tablet={}, query_id={}",
+                     _tablets[i].tablet->tablet_id(),
+                     print_id(PipelineXLocalState<>::_state->query_id()));
+        }
     }
     timer.stop();
     double cost_secs = static_cast<double>(timer.elapsed_time()) / 
NANOS_PER_SEC;
diff --git a/be/src/vec/exec/scan/new_olap_scanner.cpp 
b/be/src/vec/exec/scan/new_olap_scanner.cpp
index ac0701f21fa..18b3571299f 100644
--- a/be/src/vec/exec/scan/new_olap_scanner.cpp
+++ b/be/src/vec/exec/scan/new_olap_scanner.cpp
@@ -199,6 +199,11 @@ Status NewOlapScanner::init() {
                 LOG(WARNING) << "fail to init reader.res=" << st;
                 return st;
             }
+            if (config::enable_mow_verbose_log && 
tablet->enable_unique_key_merge_on_write()) {
+                LOG_INFO("finish capture_rs_readers for tablet={}, 
query_id={}",
+                         tablet->tablet_id(), print_id(_state->query_id()));
+            }
+
             if (!_state->skip_delete_predicate()) {
                 read_source.fill_delete_predicates();
             }


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

Reply via email to