From eaeca23f8e8442994a4d5bee18ff2c74dfafbf06 Mon Sep 17 00:00:00 2001 From: Larry955 <1412857955@qq.com> Date: Thu, 13 Apr 2023 07:04:30 +0000 Subject: [PATCH] fix memleak caused by not releasing resources in inner_close() of OSG --- .../ob_optimizer_stats_gathering_op.cpp | 24 +++++++------------ .../ob_optimizer_stats_gathering_op.h | 1 - 2 files changed, 9 insertions(+), 16 deletions(-) diff --git a/src/sql/engine/opt_statistics/ob_optimizer_stats_gathering_op.cpp b/src/sql/engine/opt_statistics/ob_optimizer_stats_gathering_op.cpp index 3dec538f74..23305c4cb8 100644 --- a/src/sql/engine/opt_statistics/ob_optimizer_stats_gathering_op.cpp +++ b/src/sql/engine/opt_statistics/ob_optimizer_stats_gathering_op.cpp @@ -88,26 +88,23 @@ ObOptimizerStatsGatheringOp::ObOptimizerStatsGatheringOp(ObExecContext &exec_ctx { } -void ObOptimizerStatsGatheringOp::destroy() { - table_stats_map_.destroy(); - column_stats_map_.destroy(); - part_map_.destroy(); - arena_.reset(); +void ObOptimizerStatsGatheringOp::destroy() +{ + reset(); ObOperator::destroy(); } -void ObOptimizerStatsGatheringOp::reset() { -} - -void ObOptimizerStatsGatheringOp::reuse_stats() { +void ObOptimizerStatsGatheringOp::reset() +{ FOREACH(it, column_stats_map_) { if (OB_NOT_NULL(it->second)) { - it->second->reset(); + it->second->~ObOptColumnStat(); it->second = NULL; } } - table_stats_map_.reuse(); - column_stats_map_.reuse(); + table_stats_map_.destroy(); + column_stats_map_.destroy(); + part_map_.destroy(); arena_.reset(); } @@ -192,7 +189,6 @@ int ObOptimizerStatsGatheringOp::inner_get_next_row() LOG_WARN("failed to call msg end", K(ret)); } } - reuse_stats(); if (OB_SUCC(ret)) { ret = OB_ITER_END; } @@ -241,10 +237,8 @@ int ObOptimizerStatsGatheringOp::inner_get_next_batch(const int64_t max_row_cnt) LOG_WARN("failed to call msg end", K(ret)); } } - reuse_stats(); } } - return ret; } diff --git a/src/sql/engine/opt_statistics/ob_optimizer_stats_gathering_op.h b/src/sql/engine/opt_statistics/ob_optimizer_stats_gathering_op.h index 39631720ee..485bf842e9 100644 --- a/src/sql/engine/opt_statistics/ob_optimizer_stats_gathering_op.h +++ b/src/sql/engine/opt_statistics/ob_optimizer_stats_gathering_op.h @@ -106,7 +106,6 @@ public: private: static const int64_t DEFAULT_HASH_MAP_BUCKETS_COUNT = 100; - void reuse_stats(); inline TabStatIndMap& get_tab_stat_map() { return table_stats_map_;}; inline ColStatIndMap& get_col_stat_map() { return column_stats_map_;};