Skip to content

Commit 94f9a4f

Browse files
BiteTheDDDDtDoris-Extras
authored andcommitted
[Bug](brpc) fix sync_filter_size/apply_filterv2 has wrong closure (apache#39155)
## Proposed changes 1. fix sync_filter_size/apply_filterv2 has wrong closure 2. avoid to use thread local storage of iobuf
1 parent c85790d commit 94f9a4f

File tree

1 file changed

+7
-3
lines changed

1 file changed

+7
-3
lines changed

be/src/runtime/runtime_filter_mgr.cpp

+7-3
Original file line numberDiff line numberDiff line change
@@ -347,7 +347,7 @@ Status RuntimeFilterMergeControllerEntity::send_filter_size(const PSendFilterSiz
347347
closure->request_->set_filter_size(cnt_val->global_size);
348348

349349
stub->sync_filter_size(closure->cntl_.get(), closure->request_.get(),
350-
closure->response_.get(), brpc::DoNothing());
350+
closure->response_.get(), closure.get());
351351
closure.release();
352352
}
353353
}
@@ -430,7 +430,11 @@ Status RuntimeFilterMergeControllerEntity::merge(const PMergeFilterRequest* requ
430430
}
431431

432432
if (data != nullptr && len > 0) {
433-
request_attachment.append(data, len);
433+
void* allocated = malloc(len);
434+
memcpy(allocated, data, len);
435+
// control the memory by doris self to avoid using brpc's thread local storage
436+
// because the memory of tls will not be released
437+
request_attachment.append_user_data(allocated, len, [](void* ptr) { free(ptr); });
434438
has_attachment = true;
435439
}
436440

@@ -464,7 +468,7 @@ Status RuntimeFilterMergeControllerEntity::merge(const PMergeFilterRequest* requ
464468
continue;
465469
}
466470
stub->apply_filterv2(closure->cntl_.get(), closure->request_.get(),
467-
closure->response_.get(), brpc::DoNothing());
471+
closure->response_.get(), closure.get());
468472
closure.release();
469473
}
470474
}

0 commit comments

Comments
 (0)