[fix](runtime filter) Fix extremely high CPU usage caused by rf merge #27894
This commit is contained in:
@ -40,7 +40,6 @@
|
||||
#include "runtime/runtime_state.h"
|
||||
#include "runtime/thread_context.h"
|
||||
#include "util/brpc_client_cache.h"
|
||||
#include "util/spinlock.h"
|
||||
|
||||
namespace doris {
|
||||
|
||||
@ -221,7 +220,7 @@ Status RuntimeFilterMergeControllerEntity::_init_with_desc(
|
||||
// LOG(INFO) << "entity filter id:" << filter_id;
|
||||
static_cast<void>(
|
||||
cntVal->filter->init_with_desc(&cntVal->runtime_filter_desc, query_options, -1, false));
|
||||
_filter_map.emplace(filter_id, CntlValwithLock {cntVal, std::make_unique<SpinLock>()});
|
||||
_filter_map.emplace(filter_id, CntlValwithLock {cntVal, std::make_unique<std::mutex>()});
|
||||
return Status::OK();
|
||||
}
|
||||
|
||||
@ -243,7 +242,7 @@ Status RuntimeFilterMergeControllerEntity::_init_with_desc(
|
||||
auto filter_id = runtime_filter_desc->filter_id;
|
||||
// LOG(INFO) << "entity filter id:" << filter_id;
|
||||
static_cast<void>(cntVal->filter->init_with_desc(&cntVal->runtime_filter_desc, query_options));
|
||||
_filter_map.emplace(filter_id, CntlValwithLock {cntVal, std::make_unique<SpinLock>()});
|
||||
_filter_map.emplace(filter_id, CntlValwithLock {cntVal, std::make_unique<std::mutex>()});
|
||||
return Status::OK();
|
||||
}
|
||||
|
||||
@ -317,7 +316,7 @@ Status RuntimeFilterMergeControllerEntity::merge(const PMergeFilterRequest* requ
|
||||
// iter->second = pair{CntlVal,SpinLock}
|
||||
cntVal = iter->second.first;
|
||||
{
|
||||
std::lock_guard<SpinLock> l(*iter->second.second);
|
||||
std::lock_guard<std::mutex> l(*iter->second.second);
|
||||
MergeRuntimeFilterParams params(request, attach_data);
|
||||
ObjectPool* pool = cntVal->pool.get();
|
||||
RuntimeFilterWrapperHolder holder;
|
||||
|
||||
@ -170,7 +170,7 @@ private:
|
||||
std::shared_mutex _filter_map_mutex;
|
||||
std::shared_ptr<MemTracker> _mem_tracker;
|
||||
using CntlValwithLock =
|
||||
std::pair<std::shared_ptr<RuntimeFilterCntlVal>, std::unique_ptr<SpinLock>>;
|
||||
std::pair<std::shared_ptr<RuntimeFilterCntlVal>, std::unique_ptr<std::mutex>>;
|
||||
std::map<int, CntlValwithLock> _filter_map;
|
||||
RuntimeState* _state = nullptr;
|
||||
bool _opt_remote_rf = true;
|
||||
|
||||
Reference in New Issue
Block a user