[CP] [Bugfix]fix htable query memory leak
This commit is contained in:
@ -362,6 +362,7 @@ int ObHTableDeleteExecutor::query_and_delete(const ObTableQuery &query)
|
|||||||
LOG_WARN("fail to close row iterator", K(tmp_ret));
|
LOG_WARN("fail to close row iterator", K(tmp_ret));
|
||||||
ret = COVER_SUCC(tmp_ret);
|
ret = COVER_SUCC(tmp_ret);
|
||||||
}
|
}
|
||||||
|
ObTableQueryUtils::destroy_result_iterator(result_iter);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -1027,6 +1027,7 @@ int ObTableQueryAndMutateP::try_process()
|
|||||||
scan_spec->destroy_executor(executor);
|
scan_spec->destroy_executor(executor);
|
||||||
tb_ctx_.set_expr_info(nullptr);
|
tb_ctx_.set_expr_info(nullptr);
|
||||||
}
|
}
|
||||||
|
ObTableQueryUtils::destroy_result_iterator(result_iterator);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool need_rollback_trans = (OB_SUCCESS != ret);
|
bool need_rollback_trans = (OB_SUCCESS != ret);
|
||||||
|
@ -139,6 +139,13 @@ int ObTableQueryUtils::generate_query_result_iterator(ObIAllocator &allocator,
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ObTableQueryUtils::destroy_result_iterator(ObTableQueryResultIterator *result_iter)
|
||||||
|
{
|
||||||
|
if (OB_NOT_NULL(result_iter)) {
|
||||||
|
result_iter->~ObTableQueryResultIterator();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
int ObTableQueryUtils::get_rowkey_column_names(const ObTableSchema &table_schema, ObIArray<ObString> &names)
|
int ObTableQueryUtils::get_rowkey_column_names(const ObTableSchema &table_schema, ObIArray<ObString> &names)
|
||||||
{
|
{
|
||||||
int ret = OB_SUCCESS;
|
int ret = OB_SUCCESS;
|
||||||
|
@ -30,6 +30,7 @@ public:
|
|||||||
ObTableQueryResult &one_result,
|
ObTableQueryResult &one_result,
|
||||||
const ObTableCtx &tb_ctx,
|
const ObTableCtx &tb_ctx,
|
||||||
ObTableQueryResultIterator *&result_iter);
|
ObTableQueryResultIterator *&result_iter);
|
||||||
|
static void destroy_result_iterator(ObTableQueryResultIterator *result_iter);
|
||||||
static int get_rowkey_column_names(const ObTableSchema &table_schema, ObIArray<ObString> &names);
|
static int get_rowkey_column_names(const ObTableSchema &table_schema, ObIArray<ObString> &names);
|
||||||
static int get_full_column_names(const ObTableSchema &table_schema, ObIArray<ObString> &names);
|
static int get_full_column_names(const ObTableSchema &table_schema, ObIArray<ObString> &names);
|
||||||
|
|
||||||
|
@ -229,6 +229,7 @@ int ObTableQueryP::query_and_result(ObTableApiScanExecutor *executor)
|
|||||||
LOG_WARN("fail to close row iter", K(tmp_ret));
|
LOG_WARN("fail to close row iter", K(tmp_ret));
|
||||||
ret = COVER_SUCC(tmp_ret);
|
ret = COVER_SUCC(tmp_ret);
|
||||||
}
|
}
|
||||||
|
ObTableQueryUtils::destroy_result_iterator(result_iter);
|
||||||
|
|
||||||
LOG_DEBUG("last result", K(ret), "row_count", result_.get_row_count());
|
LOG_DEBUG("last result", K(ret), "row_count", result_.get_row_count());
|
||||||
NG_TRACE_EXT(tag1, OB_ID(return_rows), result_count, OB_ID(arg2), result_row_count_);
|
NG_TRACE_EXT(tag1, OB_ID(return_rows), result_count, OB_ID(arg2), result_row_count_);
|
||||||
|
@ -643,6 +643,7 @@ int ObTableQuerySyncP::destory_query_session(bool need_rollback_trans)
|
|||||||
} else if (OB_FAIL(ObQuerySyncMgr::get_instance().get_query_session_map()->erase_refactored(query_session_id_))) {
|
} else if (OB_FAIL(ObQuerySyncMgr::get_instance().get_query_session_map()->erase_refactored(query_session_id_))) {
|
||||||
LOG_WARN("fail to erase query session from query sync mgr", K(ret));
|
LOG_WARN("fail to erase query session from query sync mgr", K(ret));
|
||||||
} else {
|
} else {
|
||||||
|
ObTableQueryUtils::destroy_result_iterator(query_session_->get_result_iter());
|
||||||
OB_DELETE(ObTableQuerySyncSession, ObModIds::TABLE_PROC, query_session_);
|
OB_DELETE(ObTableQuerySyncSession, ObModIds::TABLE_PROC, query_session_);
|
||||||
LOG_DEBUG("destory query session success", K(ret), K(query_session_id_));
|
LOG_DEBUG("destory query session success", K(ret), K(query_session_id_));
|
||||||
}
|
}
|
||||||
|
@ -75,6 +75,7 @@ public:
|
|||||||
~ObTableQuerySyncSession();
|
~ObTableQuerySyncSession();
|
||||||
|
|
||||||
void set_result_iterator(table::ObTableQueryResultIterator* iter);
|
void set_result_iterator(table::ObTableQueryResultIterator* iter);
|
||||||
|
table::ObTableQueryResultIterator *get_result_iter() { return result_iterator_; };
|
||||||
void set_in_use(bool in_use) {in_use_ = in_use;}
|
void set_in_use(bool in_use) {in_use_ = in_use;}
|
||||||
bool is_in_use() {return in_use_;}
|
bool is_in_use() {return in_use_;}
|
||||||
int init();
|
int init();
|
||||||
|
Reference in New Issue
Block a user