This is an automated email from the ASF dual-hosted git repository.
eldenmoon 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 c4b2ddd688d [Fix](Variant) clear block after a flush complete (#35226)
(#35372)
c4b2ddd688d is described below
commit c4b2ddd688ddb66b001ae80be4faaf599d3753a3
Author: lihangyu <[email protected]>
AuthorDate: Fri May 24 19:10:07 2024 +0800
[Fix](Variant) clear block after a flush complete (#35226) (#35372)
Otherwise result in crash
```
*** SIGSEGV address not mapped to object (@0x0) received by PID 4149909
(TID 4152328 OR 0x7efefc60d700) from PID 0; stack trace: ***
0# doris::signal::(anonymous namespace)::FailureSignalHandler(int,
siginfo_t*, void*) at
/home/zcp/repo_center/doris_master/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# 0x00007F031AD0E090 in /lib/x86_64-linux-gnu/libc.so.6
4# doris::Status
doris::vectorized::MutableBlock::merge_impl<doris::vectorized::Block
const&>(doris::vectorized::Block const&) at
/home/zcp/repo_center/doris_master/doris/be/src/vec/core/block.h:586
5# doris::Status
doris::vectorized::MutableBlock::merge<doris::vectorized::Block
const&>(doris::vectorized::Block const&) at
/home/zcp/repo_center/doris_master/doris/be/src/vec/core/block.h:521
```
---
be/src/olap/rowset/segment_creator.cpp | 2 ++
1 file changed, 2 insertions(+)
diff --git a/be/src/olap/rowset/segment_creator.cpp
b/be/src/olap/rowset/segment_creator.cpp
index ffa8a1b2916..f7b364a9fd1 100644
--- a/be/src/olap/rowset/segment_creator.cpp
+++ b/be/src/olap/rowset/segment_creator.cpp
@@ -389,6 +389,7 @@ Status SegmentCreator::add_block(const vectorized::Block*
block) {
if (_buffer_block.allocated_bytes() > config::write_buffer_size) {
vectorized::Block block = _buffer_block.to_block();
RETURN_IF_ERROR(flush_single_block(&block));
+ _buffer_block.clear();
} else {
RETURN_IF_ERROR(_buffer_block.merge(*block));
}
@@ -420,6 +421,7 @@ Status SegmentCreator::flush() {
if (_buffer_block.rows() > 0) {
vectorized::Block block = _buffer_block.to_block();
RETURN_IF_ERROR(flush_single_block(&block));
+ _buffer_block.clear();
}
if (_flush_writer == nullptr) {
return Status::OK();
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]