[fix](mem tracker) Fix some memory leaks, inaccurate statistics, core dump, deadlock bugs (#10072)
1. Fix the memory leak. When the load task is canceled, the `IndexChannel` and `NodeChannel` mem trackers cannot be destructed in time. 2. Fix Load task being frequently canceled by oom and inaccurate `LoadChannel` mem tracker limit, and rewrite the variable name of `mem limit` in `LoadChannel`. 3. Fix core dump, when logout task mem tracker, phmap erase fails, resulting in repeated logout of the same tracker. 4. Fix the deadlock, when add_child_tracker mem limit exceeds, calling log_usage causes `_child_trackers_lock` deadlock. 5. Fix frequent log printing when thread mem tracker limit exceeds, which will affect readability and performance. 6. Optimize some details of mem tracker display.
This commit is contained in:
@ -136,12 +136,14 @@ SwitchThreadMemTracker<Existed>::~SwitchThreadMemTracker() {
|
||||
#endif // USE_MEM_TRACKER
|
||||
}
|
||||
|
||||
SwitchThreadMemTrackerErrCallBack::SwitchThreadMemTrackerErrCallBack(
|
||||
const std::string& action_type, bool cancel_work, ERRCALLBACK err_call_back_func) {
|
||||
SwitchThreadMemTrackerErrCallBack::SwitchThreadMemTrackerErrCallBack(const std::string& action_type,
|
||||
bool cancel_work,
|
||||
ERRCALLBACK err_call_back_func,
|
||||
bool log_limit_exceeded) {
|
||||
#ifdef USE_MEM_TRACKER
|
||||
DCHECK(action_type != std::string());
|
||||
_old_tracker_cb = tls_ctx()->_thread_mem_tracker_mgr->update_consume_err_cb(
|
||||
action_type, cancel_work, err_call_back_func);
|
||||
action_type, cancel_work, err_call_back_func, log_limit_exceeded);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user