amorynan opened a new pull request, #17795:
URL: https://github.com/apache/doris/pull/17795
# Proposed changes
map offsets fix
## Problem summary
When compaction case, memory map offsets coming to same olap convertor
which is from 0 to 0+size
but it should be continue in different pages when in one segment writer .
eg :
last block with map offset : [3, 6, 8, ... 100]
this block with map offset : [5, 10, 15 ..., 100]
the same convertor should record last offset to make later coming offset
followed last offset.
so after convertor :
the current offset should [105, 110, 115, ... 200], then column writer just
call append_data() to make the right offset data append pages
If we do not changes , when compaction or some read situation , here would
come a core
```
I0310 09:50:41.223521 449227 thrift_server.cpp:355] ThriftServer 'heartbeat'
started on port: 9050
*** Query id: 0-0 ***
*** Aborted at 1678413042 (unix time) try "date -d @1678413042" if you are
using GNU date ***
*** Current BE git commitID: e80ae03 ***
*** SIGSEGV address not mapped to object (@0x2450) received by PID 449227
(TID 449817 OR 0x7f6f13626700) from PID 9296; stack trace: ***
0# doris::signal::(anonymous namespace)::FailureSignalHandler(int,
siginfo_t*, void*) at /mnt/datadisk0/doris/be/src/common/signal_handler.h:413
1# 0x00007F7043B24AF9 in
/usr/lib/jvm/java-11-openjdk-amd64/lib/server/libjvm.so
2# JVM_handle_linux_signal in
/usr/lib/jvm/java-11-openjdk-amd64/lib/server/libjvm.so
3# 0x00007F7043B1D1EC in
/usr/lib/jvm/java-11-openjdk-amd64/lib/server/libjvm.so
4# 0x00007F70493C53C0 in /lib/x86_64-linux-gnu/libpthread.so.0
5# je_large_prof_info_get at ../src/large.c:287
6# je_free_default at ../src/jemalloc.c:3014
7# bshuf_trans_bit_elem_AVX_avx2 in
/mnt/datadisk1/Doris-Deploy/20230310010008-doris-master-e80ae0367/be/lib/doris_be
8# bshuf_compress_lz4_block_avx2 in
/mnt/datadisk1/Doris-Deploy/20230310010008-doris-master-e80ae0367/be/lib/doris_be
9# bshuf_blocked_wrap_fun_avx2 in
/mnt/datadisk1/Doris-Deploy/20230310010008-doris-master-e80ae0367/be/lib/doris_be
10# bshuf_compress_lz4_avx2 in
/mnt/datadisk1/Doris-Deploy/20230310010008-doris-master-e80ae0367/be/lib/doris_be
11# doris::segment_v2::BitshufflePageBuilder<(doris::FieldType)8>::finish()
at /mnt/datadisk0/doris/be/src/olap/rowset/segment_v2/bitshuffle_page.h:146
12# doris::segment_v2::ScalarColumnWriter::finish_current_page() at
/mnt/datadisk0/doris/be/src/olap/rowset/segment_v2/column_writer.cpp:667
13# doris::segment_v2::ScalarColumnWriter::append_data(unsigned char
const**, unsigned long) at
/mnt/datadisk0/doris/be/src/olap/rowset/segment_v2/column_writer.cpp:518
14# doris::segment_v2::MapColumnWriter::append_data(unsigned char const**,
unsigned long) at
/mnt/datadisk0/doris/be/src/olap/rowset/segment_v2/column_writer.cpp:1044
15# doris::segment_v2::MapColumnWriter::append_nullable(unsigned char
const*, unsigned char const**, unsigned long) at
/mnt/datadisk0/doris/be/src/olap/rowset/segment_v2/column_writer.cpp:1027
16# doris::segment_v2::ColumnWriter::append(unsigned char const*, void
const*, unsigned long) at
/mnt/datadisk0/doris/be/src/olap/rowset/segment_v2/column_writer.cpp:404
17# doris::segment_v2::SegmentWriter::append_block(doris::vectorized::Block
const*, unsigned long, unsigned long) at
/mnt/datadisk0/doris/be/src/olap/rowset/segment_v2/segment_writer.cpp:322
18# doris::VerticalBetaRowsetWriter::add_columns(doris::vectorized::Block
const*, std::vector<unsigned int, std::allocator<unsigned int> > const&, bool,
unsigned int) at
/mnt/datadisk0/doris/be/src/olap/rowset/vertical_beta_rowset_writer.cpp:96
19#
doris::Merger::vertical_compact_one_group(std::shared_ptr<doris::Tablet>,
doris::ReaderType, std::shared_ptr<doris::TabletSchema>, bool,
std::vector<unsigned int, std::allocator<unsigned int> > const&,
doris::vectorized::RowSourcesBuffer*,
std::vector<std::shared_ptr<doris::RowsetReader>,
std::allocator<std::shared_ptr<doris::RowsetReader> > > const&,
doris::RowsetWriter*, long, doris::Merger::Statistics*) at
/mnt/datadisk0/doris/be/src/olap/merger.cpp:219
20# doris::Merger::vertical_merge_rowsets(std::shared_ptr<doris::Tablet>,
doris::ReaderType, std::shared_ptr<doris::TabletSchema>,
std::vector<std::shared_ptr<doris::RowsetReader>,
std::allocator<std::shared_ptr<doris::RowsetReader> > > const&,
doris::RowsetWriter*, long, doris::Merger::Statistics*) at
/var/local/ldb-toolchain/include/c++/11/bits/shared_ptr.h:122
21# doris::Compaction::do_compaction_impl(long) at
/mnt/datadisk0/doris/be/src/olap/compaction.cpp:289
22# doris::Compaction::do_compaction(long) at
/mnt/datadisk0/doris/be/src/olap/compaction.cpp:75
23# doris::CumulativeCompaction::execute_compact_impl() at
/mnt/datadisk0/doris/be/src/olap/cumulative_compaction.cpp:78
24# doris::Compaction::execute_compact() at
/mnt/datadisk0/doris/be/src/olap/compaction.cpp:56
25# doris::Tablet::execute_compaction(doris::CompactionType) at
/mnt/datadisk0/doris/be/src/olap/tablet.cpp:1597
26# std::_Function_handler<void (),
doris::StorageEngine::_submit_compaction_task(std::shared_ptr<doris::Tablet>,
doris::CompactionType)::{lambda()#1}>::_M_invoke(std::_Any_data const&) at
/var/local/ldb-toolchain/include/c++/11/bits/std_function.h:291
27# doris::ThreadPool::dispatch_thread() at
/mnt/datadisk0/doris/be/src/util/threadpool.cpp:537
28# doris::Thread::supervise_thread(void*) at
/mnt/datadisk0/doris/be/src/util/thread.cpp:454
29# start_thread in /lib/x86_64-linux-gnu/libpthread.so.0
30# __clone in /lib/x86_64-linux-gnu/libc.so.6
```
Describe your changes.
## Checklist(Required)
* [ ] Does it affect the original behavior
* [ ] Has unit tests been added
* [ ] Has document been added or modified
* [ ] Does it need to update dependencies
* [ ] Is this PR support rollback (If NO, please explain WHY)
## Further comments
If this is a relatively large or complex change, kick off the discussion at
[[email protected]](mailto:[email protected]) by explaining why you
chose the solution you did and what alternatives you considered, etc...
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]