This is an automated email from the ASF dual-hosted git repository.
michaelsmith pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/impala.git
The following commit(s) were added to refs/heads/master by this push:
new beafef5d3 IMPALA-14611: Fix memory leak in
ExecLoadIcebergDataRequestImpl
beafef5d3 is described below
commit beafef5d3411646f2ec8474c5bc046bc612722b0
Author: Nandor Kollar <[email protected]>
AuthorDate: Thu Dec 11 08:13:36 2025 +0000
IMPALA-14611: Fix memory leak in ExecLoadIcebergDataRequestImpl
A vector tracking completed queries is allocated on the heap,
and never freed, leading to memory leak. As this vector is
used only within the functions, we can allocate it on the stack instead.
Change-Id: I058da5f9ddc1b36ff4e5392ecbdd6699e9789a58
Reviewed-on: http://gerrit.cloudera.org:8080/23775
Reviewed-by: Impala Public Jenkins <[email protected]>
Tested-by: Michael Smith <[email protected]>
---
be/src/service/client-request-state.cc | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/be/src/service/client-request-state.cc
b/be/src/service/client-request-state.cc
index 2ef6efb86..031a90348 100644
--- a/be/src/service/client-request-state.cc
+++ b/be/src/service/client-request-state.cc
@@ -1021,8 +1021,8 @@ void
ClientRequestState::ExecLoadIcebergDataRequestImpl(TLoadDataResp response)
parent_server_, drop_profile, &profile_pool_);
// Execute queries
RETURN_VOID_IF_ERROR(child_query_executor_->ExecAsync(move(child_queries)));
- vector<ChildQuery*>* completed_queries = new vector<ChildQuery*>();
- Status query_status = child_query_executor_->WaitForAll(completed_queries);
+ vector<ChildQuery*> completed_queries;
+ Status query_status = child_query_executor_->WaitForAll(&completed_queries);
if (query_status.ok()) {
const char* path = response.create_location.c_str();
string delete_err = "Load was succesful, but failed to remove staging data
under '"
@@ -2558,8 +2558,8 @@ void ClientRequestState::ExecMigrateRequestImpl() {
// Execute child queries
unique_ptr<ChildQueryExecutor> query_executor(new ChildQueryExecutor());
RETURN_VOID_IF_ERROR(query_executor->ExecAsync(move(child_queries)));
- vector<ChildQuery*>* completed_queries = new vector<ChildQuery*>();
- Status query_status = query_executor->WaitForAll(completed_queries);
+ vector<ChildQuery*> completed_queries;
+ Status query_status = query_executor->WaitForAll(&completed_queries);
if (!query_status.ok()) AddTableResetHints(params, &query_status);
{
lock_guard<mutex> l(lock_);
@@ -2615,8 +2615,8 @@ void ClientRequestState::ExecMigrateRequestImpl() {
// Execute queries
unique_ptr<ChildQueryExecutor> query_executor(new ChildQueryExecutor());
RETURN_VOID_IF_ERROR(query_executor->ExecAsync(move(child_queries)));
- vector<ChildQuery*>* completed_queries = new vector<ChildQuery*>();
- Status query_status = query_executor->WaitForAll(completed_queries);
+ vector<ChildQuery*> completed_queries;
+ Status query_status = query_executor->WaitForAll(&completed_queries);
{
lock_guard<mutex> l(lock_);
RETURN_VOID_IF_ERROR(UpdateQueryStatus(query_status));