From c24ff2ff81f3b189c7ab7f8becad5ed83ab9b13a Mon Sep 17 00:00:00 2001 From: TengJianPing <18241664+jacktengg@users.noreply.github.com> Date: Tue, 8 Oct 2024 17:13:33 +0800 Subject: [PATCH] [fix](upgrade) fix version check failure of window_funnel when upgrading (#41542) ## Proposed changes Issue Number: close #xxx Fix fix version check failure of window_funnel when upgrading from 2.1.6 and higher version to latest branch 2.1. ``` 02:49:13 F20240930 02:47:48.546983 7581 block.cpp:89] Check failed: BeExecVersionManager::check_be_exec_version(be_exec_version) 02:49:13 *** Check failure stack trace: *** 02:49:13 @ 0x564640041856 google::LogMessage::SendToLog() 02:49:13 @ 0x56464003e2a0 google::LogMessage::Flush() 02:49:13 @ 0x564640042099 google::LogMessageFatal::~LogMessageFatal() 02:49:13 @ 0x56463922d106 doris::vectorized::Block::deserialize() 02:49:13 @ 0x5646390a82bf doris::vectorized::WindowFunnelState<>::read() 02:49:13 @ 0x5646390a6889 doris::vectorized::IAggregateFunctionDataHelper<>::deserialize_and_merge() 02:49:13 @ 0x5646390acdc3 doris::vectorized::IAggregateFunctionHelper<>::deserialize_and_merge_from_column_range() 02:49:13 @ 0x56463fa77152 doris::pipeline::AggSinkLocalState::_merge_without_key() 02:49:13 @ 0x56463fa9d114 doris::pipeline::AggSinkLocalState::Executor<>::execute() 02:49:13 @ 0x56463fa78569 doris::pipeline::AggSinkOperatorX::sink() 02:49:13 @ 0x564640013296 doris::pipeline::PipelineXTask::execute() 02:49:13 @ 0x56464001d41c doris::pipeline::TaskScheduler::_do_work() 02:49:13 @ 0x56463663e078 doris::ThreadPool::dispatch_thread() 02:49:13 @ 0x564636634901 doris::Thread::supervise_thread() 02:49:13 @ 0x7fb64cf58ac3 (unknown) 02:49:13 @ 0x7fb64cfea850 (unknown) 02:49:13 @ (nil) (unknown) 02:49:13 *** Query id: b0cd194940184766-961c310e833e92b1 *** 02:49:13 *** is nereids: 1 *** 02:49:13 *** tablet id: 0 *** 02:49:13 *** Aborted at 1727635668 (unix time) try "date -d @1727635668" if you are using GNU date *** 02:49:13 *** Current BE git commitID: 653e315ba5 *** 02:49:13 *** SIGABRT unknown detail explain (@0x1648) received by PID 5704 (TID 7581 OR 0x7fb354a9a640) from PID 5704; stack trace: *** 02:49:13 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 02:49:13 1# 0x00007FB64CF06520 in /lib/x86_64-linux-gnu/libc.so.6 02:49:13 2# pthread_kill at ./nptl/pthread_kill.c:89 02:49:13 3# raise at ../sysdeps/posix/raise.c:27 02:49:13 4# abort at ./stdlib/abort.c:81 02:49:13 5# 0x000056464004C06D in /mnt/hdd01/ci/compatibility-deploy/be/lib/doris_be 02:49:13 6# 0x000056464003E76A in /mnt/hdd01/ci/compatibility-deploy/be/lib/doris_be 02:49:13 7# google::LogMessage::SendToLog() in /mnt/hdd01/ci/compatibility-deploy/be/lib/doris_be 02:49:13 8# google::LogMessage::Flush() in /mnt/hdd01/ci/compatibility-deploy/be/lib/doris_be 02:49:13 9# google::LogMessageFatal::~LogMessageFatal() in /mnt/hdd01/ci/compatibility-deploy/be/lib/doris_be 02:49:13 10# doris::vectorized::Block::deserialize(doris::PBlock const&) at /home/zcp/repo_center/doris_branch-2.1/doris/be/src/vec/core/block.cpp:113 02:49:13 11# doris::vectorized::WindowFunnelState<(doris::vectorized::TypeIndex)14, long>::read(doris::vectorized::BufferReadable&) at /home/zcp/repo_center/doris_branch-2.1/doris/be/src/vec/aggregate_functions/aggregate_function_window_funnel.h:363 02:49:13 12# doris::vectorized::IAggregateFunctionDataHelper, doris::vectorized::AggregateFunctionWindowFunnel<(doris::vectorized::TypeIndex)14, long> >::deserialize_and_merge(char*, char*, doris::vectorized::BufferReadable&, doris::vectorized::Arena*) const at /home/zcp/repo_center/doris_branch-2.1/doris/be/src/vec/aggregate_functions/aggregate_function.h:517 02:49:13 13# doris::vectorized::IAggregateFunctionHelper, false> >::deserialize_and_merge_from_column_range(char*, doris::vectorized::IColumn const&, unsigned long, unsigned long, doris::vectorized::Arena*) const at /home/zcp/repo_center/doris_branch-2.1/doris/be/src/vec/aggregate_functions/aggregate_function.h:465 02:49:13 14# doris::pipeline::AggSinkLocalState::_merge_without_key(doris::vectorized::Block*) at /home/zcp/repo_center/doris_branch-2.1/doris/be/src/pipeline/exec/aggregation_sink_operator.cpp:389 02:49:13 15# doris::pipeline::AggSinkLocalState::Executor::execute(doris::pipeline::AggSinkLocalState*, doris::vectorized::Block*) at /home/zcp/repo_center/doris_branch-2.1/doris/be/src/pipeline/exec/aggregation_sink_operator.h:73 02:49:13 16# doris::pipeline::AggSinkOperatorX::sink(doris::RuntimeState*, doris::vectorized::Block*, bool) at /home/zcp/repo_center/doris_branch-2.1/doris/be/src/pipeline/exec/aggregation_sink_operator.cpp:744 02:49:13 17# doris::pipeline::PipelineXTask::execute(bool*) at /home/zcp/repo_center/doris_branch-2.1/doris/be/src/pipeline/pipeline_x/pipeline_x_task.cpp:332 02:49:13 18# doris::pipeline::TaskScheduler::_do_work(unsigned long) at /home/zcp/repo_center/doris_branch-2.1/doris/be/src/pipeline/task_scheduler.cpp:347 02:49:13 19# doris::ThreadPool::dispatch_thread() in /mnt/hdd01/ci/compatibility-deploy/be/lib/doris_be 02:49:13 20# doris::Thread::supervise_thread(void*) at /home/zcp/repo_center/doris_branch-2.1/doris/be/src/util/thread.cpp:499 02:49:13 21# start_thread at ./nptl/pthread_create.c:442 02:49:13 22# 0x00007FB64CFEA850 at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:83 02:49:13 [2024-09-30 02:49:13,147 __main__:796] [INFO]: 172.20.50.73 last coredump sql: 2024-09-30 02:48:18,328 [query] Query b0cd194940184766-961c310e833e92b1 1 times with new query id: 2e0e00de0e7548dd-95f9abc9d8d11c3a ``` --- .../aggregate_function_window_funnel.h | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/be/src/vec/aggregate_functions/aggregate_function_window_funnel.h b/be/src/vec/aggregate_functions/aggregate_function_window_funnel.h index e6697968403b46..0b6e2cbabcdb95 100644 --- a/be/src/vec/aggregate_functions/aggregate_function_window_funnel.h +++ b/be/src/vec/aggregate_functions/aggregate_function_window_funnel.h @@ -81,6 +81,7 @@ struct WindowFunnelState { DateV2Value, VecDateTimeValue>; int event_count = 0; int64_t window; + int version {}; bool enable_mode; WindowFunnelMode window_funnel_mode; mutable vectorized::MutableBlock mutable_block; @@ -97,8 +98,9 @@ struct WindowFunnelState { sort_description[0].direction = 1; sort_description[0].nulls_direction = -1; } - WindowFunnelState(int arg_event_count) : WindowFunnelState() { + WindowFunnelState(int arg_event_count, int arg_version) : WindowFunnelState() { event_count = arg_event_count; + version = arg_version; event_columns_datas.resize(event_count); auto timestamp_column = ColumnVector::create(); @@ -308,8 +310,7 @@ struct WindowFunnelState { std::string buff; Block block = mutable_block.to_block(); status = block.serialize( - BeExecVersionManager::get_newest_version(), &pblock, &uncompressed_bytes, - &compressed_bytes, + version, &pblock, &uncompressed_bytes, &compressed_bytes, segment_v2::CompressionTypePB::ZSTD); // ZSTD for better compression ratio block.clear_column_data(); if (!status.ok()) { @@ -374,7 +375,7 @@ class AggregateFunctionWindowFunnel void create(AggregateDataPtr __restrict place) const override { auto data = new (place) WindowFunnelState( - IAggregateFunction::get_argument_types().size() - 3); + IAggregateFunction::get_argument_types().size() - 3, version); /// support window funnel mode from 2.0. See `BeExecVersionManager::max_be_exec_version` data->enable_mode = version >= 3; }