Skip to content

Commit ee356e5

Browse files
authored
[Bug](brpc) fix sync_filter_size/apply_filterv2 has wrong closure (#39155)
## Proposed changes 1. fix sync_filter_size/apply_filterv2 has wrong closure 2. avoid to use thread local storage of iobuf
1 parent b0519d2 commit ee356e5

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
@@ -343,7 +343,7 @@ Status RuntimeFilterMergeControllerEntity::send_filter_size(const PSendFilterSiz
343343
closure->request_->set_filter_size(cnt_val->global_size);
344344

345345
stub->sync_filter_size(closure->cntl_.get(), closure->request_.get(),
346-
closure->response_.get(), brpc::DoNothing());
346+
closure->response_.get(), closure.get());
347347
closure.release();
348348
}
349349
}
@@ -425,7 +425,11 @@ Status RuntimeFilterMergeControllerEntity::merge(const PMergeFilterRequest* requ
425425
}
426426

427427
if (data != nullptr && len > 0) {
428-
request_attachment.append(data, len);
428+
void* allocated = malloc(len);
429+
memcpy(allocated, data, len);
430+
// control the memory by doris self to avoid using brpc's thread local storage
431+
// because the memory of tls will not be released
432+
request_attachment.append_user_data(allocated, len, [](void* ptr) { free(ptr); });
429433
has_attachment = true;
430434
}
431435

@@ -459,7 +463,7 @@ Status RuntimeFilterMergeControllerEntity::merge(const PMergeFilterRequest* requ
459463
continue;
460464
}
461465
stub->apply_filterv2(closure->cntl_.get(), closure->request_.get(),
462-
closure->response_.get(), brpc::DoNothing());
466+
closure->response_.get(), closure.get());
463467
closure.release();
464468
}
465469
}

0 commit comments

Comments
 (0)