This is an automated email from the ASF dual-hosted git repository. yiguolei pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push: new 00e2944102 [bugfix] fix coredump caused by wrong type cast of OlapScanNode (#11165) 00e2944102 is described below commit 00e2944102a273559ace7de31dfafce785108556 Author: TengJianPing <18241664+jackte...@users.noreply.github.com> AuthorDate: Mon Jul 25 17:57:53 2022 +0800 [bugfix] fix coredump caused by wrong type cast of OlapScanNode (#11165) --- be/src/exec/exec_node.cpp | 2 +- be/src/exec/olap_scan_node.h | 3 --- be/src/exec/scan_node.h | 5 +++++ be/src/vec/exec/volap_scan_node.h | 18 ------------------ 4 files changed, 6 insertions(+), 22 deletions(-) diff --git a/be/src/exec/exec_node.cpp b/be/src/exec/exec_node.cpp index d1ed0fc323..97afb5fa05 100644 --- a/be/src/exec/exec_node.cpp +++ b/be/src/exec/exec_node.cpp @@ -669,7 +669,7 @@ void ExecNode::try_do_aggregate_serde_improve() { return; } - OlapScanNode* scan_node = static_cast<OlapScanNode*>(agg_node[0]->_children[0]); + ScanNode* scan_node = static_cast<ScanNode*>(agg_node[0]->_children[0]); scan_node->set_no_agg_finalize(); } diff --git a/be/src/exec/olap_scan_node.h b/be/src/exec/olap_scan_node.h index 771adf76e8..5d5b700356 100644 --- a/be/src/exec/olap_scan_node.h +++ b/be/src/exec/olap_scan_node.h @@ -55,7 +55,6 @@ public: Status collect_query_statistics(QueryStatistics* statistics) override; Status close(RuntimeState* state) override; Status set_scan_ranges(const std::vector<TScanRangeParams>& scan_ranges) override; - void set_no_agg_finalize() { _need_agg_finalize = false; } Status get_hints(TabletSharedPtr table, const TPaloScanRange& scan_range, int block_row_count, bool is_begin_include, bool is_end_include, const std::vector<std::unique_ptr<OlapScanRange>>& scan_key_range, @@ -267,8 +266,6 @@ protected: std::unique_ptr<MemTracker> _scanner_mem_tracker; EvalConjunctsFn _eval_conjuncts_fn; - bool _need_agg_finalize = true; - // the max num of scan keys of this scan request. // it will set as BE's config `doris_max_scan_key_num`, // or be overwritten by value in TQueryOptions diff --git a/be/src/exec/scan_node.h b/be/src/exec/scan_node.h index 227d32f25f..22589399de 100644 --- a/be/src/exec/scan_node.h +++ b/be/src/exec/scan_node.h @@ -81,6 +81,8 @@ public: bool is_scan_node() const override { return true; } + void set_no_agg_finalize() { _need_agg_finalize = false; } + RuntimeProfile::Counter* bytes_read_counter() const { return _bytes_read_counter; } RuntimeProfile::Counter* rows_read_counter() const { return _rows_read_counter; } RuntimeProfile::Counter* total_throughput_counter() const { return _total_throughput_counter; } @@ -102,6 +104,9 @@ protected: // Wall based aggregate read throughput [bytes/sec] RuntimeProfile::Counter* _total_throughput_counter; RuntimeProfile::Counter* _num_disks_accessed_counter; + +protected: + bool _need_agg_finalize = true; }; } // namespace doris diff --git a/be/src/vec/exec/volap_scan_node.h b/be/src/vec/exec/volap_scan_node.h index 0caa9d029d..4ead17f9b3 100644 --- a/be/src/vec/exec/volap_scan_node.h +++ b/be/src/vec/exec/volap_scan_node.h @@ -53,8 +53,6 @@ public: Status set_scan_ranges(const std::vector<TScanRangeParams>& scan_ranges) override; - void set_no_agg_finalize() { _need_agg_finalize = false; } - Status get_hints(TabletSharedPtr table, const TPaloScanRange& scan_range, int block_row_count, bool is_begin_include, bool is_end_include, const std::vector<std::unique_ptr<OlapScanRange>>& scan_key_range, @@ -167,26 +165,12 @@ private: // Keeps track of total splits and the number finished. ProgressUpdater _progress; - // Lock and condition variables protecting _materialized_row_batches. Row batches are - // produced asynchronously by the scanner threads and consumed by the main thread in - // GetNext. Row batches must be processed by the main thread in the order they are - // queued to avoid freeing attached resources prematurely (row batches will never depend - // on resources attached to earlier batches in the queue). - // This lock cannot be taken together with any other locks except _lock. - std::mutex _row_batches_lock; - std::condition_variable _row_batch_added_cv; - std::condition_variable _row_batch_consumed_cv; - - std::list<RowBatch*> _materialized_row_batches; // to limit _materialized_row_batches_bytes < _max_scanner_queue_size_bytes / 2 std::atomic_size_t _materialized_row_batches_bytes = 0; - std::mutex _scan_batches_lock; - std::condition_variable _scan_batch_added_cv; std::atomic_int _running_thread = 0; std::condition_variable _scan_thread_exit_cv; - std::list<RowBatch*> _scan_row_batches; // to limit _scan_row_batches_bytes < _max_scanner_queue_size_bytes / 2 std::atomic_size_t _scan_row_batches_bytes = 0; @@ -222,8 +206,6 @@ private: std::unique_ptr<MemTracker> _scanner_mem_tracker; EvalConjunctsFn _eval_conjuncts_fn; - bool _need_agg_finalize = true; - // the max num of scan keys of this scan request. // it will set as BE's config `doris_max_scan_key_num`, // or be overwritten by value in TQueryOptions --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org