@@ -343,7 +343,7 @@ Status RuntimeFilterMergeControllerEntity::send_filter_size(const PSendFilterSiz
343
343
closure->request_ ->set_filter_size (cnt_val->global_size );
344
344
345
345
stub->sync_filter_size (closure->cntl_ .get (), closure->request_ .get (),
346
- closure->response_ .get (), brpc::DoNothing ());
346
+ closure->response_ .get (), closure. get ());
347
347
closure.release ();
348
348
}
349
349
}
@@ -425,7 +425,11 @@ Status RuntimeFilterMergeControllerEntity::merge(const PMergeFilterRequest* requ
425
425
}
426
426
427
427
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); });
429
433
has_attachment = true ;
430
434
}
431
435
@@ -459,7 +463,7 @@ Status RuntimeFilterMergeControllerEntity::merge(const PMergeFilterRequest* requ
459
463
continue ;
460
464
}
461
465
stub->apply_filterv2 (closure->cntl_ .get (), closure->request_ .get (),
462
- closure->response_ .get (), brpc::DoNothing ());
466
+ closure->response_ .get (), closure. get ());
463
467
closure.release ();
464
468
}
465
469
}
0 commit comments