@@ -347,7 +347,7 @@ Status RuntimeFilterMergeControllerEntity::send_filter_size(const PSendFilterSiz
347
347
closure->request_ ->set_filter_size (cnt_val->global_size );
348
348
349
349
stub->sync_filter_size (closure->cntl_ .get (), closure->request_ .get (),
350
- closure->response_ .get (), brpc::DoNothing ());
350
+ closure->response_ .get (), closure. get ());
351
351
closure.release ();
352
352
}
353
353
}
@@ -430,7 +430,11 @@ Status RuntimeFilterMergeControllerEntity::merge(const PMergeFilterRequest* requ
430
430
}
431
431
432
432
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); });
434
438
has_attachment = true ;
435
439
}
436
440
@@ -464,7 +468,7 @@ Status RuntimeFilterMergeControllerEntity::merge(const PMergeFilterRequest* requ
464
468
continue ;
465
469
}
466
470
stub->apply_filterv2 (closure->cntl_ .get (), closure->request_ .get (),
467
- closure->response_ .get (), brpc::DoNothing ());
471
+ closure->response_ .get (), closure. get ());
468
472
closure.release ();
469
473
}
470
474
}
0 commit comments