fix memleak caused by not releasing resources in inner_close() of OSG

This commit is contained in:
Larry955
2023-04-13 07:04:30 +00:00
committed by ob-robot
parent 6fe3cf36b0
commit eaeca23f8e
2 changed files with 9 additions and 16 deletions

View File

@ -88,26 +88,23 @@ ObOptimizerStatsGatheringOp::ObOptimizerStatsGatheringOp(ObExecContext &exec_ctx
{ {
} }
void ObOptimizerStatsGatheringOp::destroy() { void ObOptimizerStatsGatheringOp::destroy()
table_stats_map_.destroy(); {
column_stats_map_.destroy(); reset();
part_map_.destroy();
arena_.reset();
ObOperator::destroy(); ObOperator::destroy();
} }
void ObOptimizerStatsGatheringOp::reset() { void ObOptimizerStatsGatheringOp::reset()
} {
void ObOptimizerStatsGatheringOp::reuse_stats() {
FOREACH(it, column_stats_map_) { FOREACH(it, column_stats_map_) {
if (OB_NOT_NULL(it->second)) { if (OB_NOT_NULL(it->second)) {
it->second->reset(); it->second->~ObOptColumnStat();
it->second = NULL; it->second = NULL;
} }
} }
table_stats_map_.reuse(); table_stats_map_.destroy();
column_stats_map_.reuse(); column_stats_map_.destroy();
part_map_.destroy();
arena_.reset(); arena_.reset();
} }
@ -192,7 +189,6 @@ int ObOptimizerStatsGatheringOp::inner_get_next_row()
LOG_WARN("failed to call msg end", K(ret)); LOG_WARN("failed to call msg end", K(ret));
} }
} }
reuse_stats();
if (OB_SUCC(ret)) { if (OB_SUCC(ret)) {
ret = OB_ITER_END; 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)); LOG_WARN("failed to call msg end", K(ret));
} }
} }
reuse_stats();
} }
} }
return ret; return ret;
} }

View File

@ -106,7 +106,6 @@ public:
private: private:
static const int64_t DEFAULT_HASH_MAP_BUCKETS_COUNT = 100; static const int64_t DEFAULT_HASH_MAP_BUCKETS_COUNT = 100;
void reuse_stats();
inline TabStatIndMap& get_tab_stat_map() { return table_stats_map_;}; inline TabStatIndMap& get_tab_stat_map() { return table_stats_map_;};
inline ColStatIndMap& get_col_stat_map() { return column_stats_map_;}; inline ColStatIndMap& get_col_stat_map() { return column_stats_map_;};