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