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

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


The following commit(s) were added to refs/heads/branch-2.1 by this push:
     new 619a491e98a branch-2.1: [Fix](mow) Fix `DeleteBitmap::cardinality` 
(#50404)
619a491e98a is described below

commit 619a491e98a577e075ec5729561b52368dca0e94
Author: bobhan1 <bao...@selectdb.com>
AuthorDate: Sat Apr 26 14:57:38 2025 +0800

    branch-2.1: [Fix](mow) Fix `DeleteBitmap::cardinality` (#50404)
    
    ### What problem does this PR solve?
    
    
    ```
    *** Query id: ce47f2673e782ef9-5581cc671c6e7c85 ***
    *** is nereids: 0 ***
    *** tablet id: 10196 ***
    *** Aborted at 1745534277 (unix time) try "date -d @1745534277" if you are 
using GNU date ***
    *** Current BE git commitID: e5a9c2552d ***
    *** SIGSEGV address not mapped to object (@0x0) received by PID 5684 (TID 
117604 OR 0x7fe01cffd640) from PID 0; stack trace: ***
     0# doris::signal::(anonymous namespace)::FailureSignalHandler(int, 
siginfo_t*, void*) at 
/home/zcp/repo_center/doris_branch-2.1/doris/be/src/common/signal_handler.h:421
     1# PosixSignals::chained_handler(int, siginfo*, void*) [clone .part.0] in 
/usr/lib/jvm/java-17-openjdk-amd64/lib/server/libjvm.so
     2# JVM_handle_linux_signal in 
/usr/lib/jvm/java-17-openjdk-amd64/lib/server/libjvm.so
     3# 0x00007FF412552520 in /lib/x86_64-linux-gnu/libc.so.6
     4# memcpy at 
/home/zcp/repo_center/doris_branch-2.1/doris/be/src/glibc-compatibility/memcpy/memcpy_x86_64.cpp:219
     5# array_container_clone in /mnt/hdd01/PERFORMANCE_ENV/be/lib/doris_be
     6# ra_overwrite in /mnt/hdd01/PERFORMANCE_ENV/be/lib/doris_be
     7# roaring::Roaring::Roaring(roaring::Roaring const&) at 
/home/zcp/repo_center/doris_branch-2.1/doris/thirdparty/installed/include/roaring/roaring.hh:99
     8# doris::DeleteBitmap::cardinality() const at 
/home/zcp/repo_center/doris_branch-2.1/doris/be/src/olap/tablet_meta.cpp:1072
     9# doris::BetaRowsetWriter::_generate_delete_bitmap(int) at 
/home/zcp/repo_center/doris_branch-2.1/doris/be/src/olap/rowset/beta_rowset_writer.cpp:198
    10# doris::BaseBetaRowsetWriter::add_segment(unsigned int, 
doris::SegmentStatistics const&, std::shared_ptr<doris::TabletSchema>) at 
/home/zcp/repo_center/doris_branch-2.1/doris/be/src/olap/rowset/beta_rowset_writer.cpp:883
    11# doris::BetaRowsetWriter::add_segment(unsigned int, 
doris::SegmentStatistics const&, std::shared_ptr<doris::TabletSchema>) in 
/mnt/hdd01/PERFORMANCE_ENV/be/lib/doris_be
    12# doris::SegmentCollectorT<doris::BaseBetaRowsetWriter>::add(unsigned 
int, doris::SegmentStatistics&, std::shared_ptr<doris::TabletSchema>) at 
/home/zcp/repo_center/doris_branch-2.1/doris/be/src/olap/rowset/segment_creator.h:82
    13# 
doris::SegmentFlusher::_flush_segment_writer(std::unique_ptr<doris::segment_v2::VerticalSegmentWriter,
 std::default_delete<doris::segment_v2::VerticalSegmentWriter> >&, 
std::shared_ptr<doris::TabletSchema>, long*) at 
/home/zcp/repo_center/doris_branch-2.1/doris/be/src/olap/rowset/segment_creator.cpp:247
    14# doris::SegmentFlusher::flush_single_block(doris::vectorized::Block 
const*, int, long*) at 
/home/zcp/repo_center/doris_branch-2.1/doris/be/src/olap/rowset/segment_creator.cpp:78
    15# doris::SegmentCreator::flush_single_block(doris::vectorized::Block 
const*, int, long*) at 
/home/zcp/repo_center/doris_branch-2.1/doris/be/src/olap/rowset/segment_creator.cpp:400
    16# doris::BaseBetaRowsetWriter::flush_memtable(doris::vectorized::Block*, 
int, long*) at 
/home/zcp/repo_center/doris_branch-2.1/doris/be/src/olap/rowset/beta_rowset_writer.cpp:539
    17# doris::FlushToken::_do_flush_memtable(doris::MemTable*, int, long*) at 
/home/zcp/repo_center/doris_branch-2.1/doris/be/src/olap/memtable_flush_executor.cpp:158
    18# doris::FlushToken::_flush_memtable(std::unique_ptr<doris::MemTable, 
std::default_delete<doris::MemTable> >, int, long) in 
/mnt/hdd01/PERFORMANCE_ENV/be/lib/doris_be
    19# doris::MemtableFlushTask::run() at 
/home/zcp/repo_center/doris_branch-2.1/doris/be/src/olap/memtable_flush_executor.cpp:63
    20# doris::ThreadPool::dispatch_thread() in 
/mnt/hdd01/PERFORMANCE_ENV/be/lib/doris_be
    21# doris::Thread::supervise_thread(void*) at 
/home/zcp/repo_center/doris_branch-2.1/doris/be/src/util/thread.cpp:499
    22# start_thread at ./nptl/pthread_create.c:442
    23# 0x00007FF412636850 at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:83
    
    ```
---
 be/src/olap/tablet_meta.cpp | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/be/src/olap/tablet_meta.cpp b/be/src/olap/tablet_meta.cpp
index b3360537e9a..7db33c66151 100644
--- a/be/src/olap/tablet_meta.cpp
+++ b/be/src/olap/tablet_meta.cpp
@@ -1067,9 +1067,12 @@ bool DeleteBitmap::empty() const {
 }
 
 uint64_t DeleteBitmap::cardinality() const {
+    std::shared_lock l {lock};
     uint64_t res = 0;
     for (auto entry : delete_bitmap) {
-        res += entry.second.cardinality();
+        if (std::get<1>(entry.first) != DeleteBitmap::INVALID_SEGMENT_ID) {
+            res += entry.second.cardinality();
+        }
     }
     return res;
 }


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

Reply via email to