mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-22 15:42:02 +00:00
don't use pool for TaskStatsInfoGetter [#CLICKHOUSE-4209]
Pool is not needed because creation of a TaskStatsInfoGetter takes an order of 10us. Also pool is harmful because created sockets are never closed.
This commit is contained in:
parent
d9bc934b7d
commit
006a764df9
@ -3,7 +3,6 @@
|
|||||||
#include "CurrentThread.h"
|
#include "CurrentThread.h"
|
||||||
#include <common/logger_useful.h>
|
#include <common/logger_useful.h>
|
||||||
#include <Common/ThreadStatus.h>
|
#include <Common/ThreadStatus.h>
|
||||||
#include <Common/ObjectPool.h>
|
|
||||||
#include <Common/TaskStatsInfoGetter.h>
|
#include <Common/TaskStatsInfoGetter.h>
|
||||||
#include <Interpreters/ProcessList.h>
|
#include <Interpreters/ProcessList.h>
|
||||||
#include <Interpreters/Context.h>
|
#include <Interpreters/Context.h>
|
||||||
@ -24,8 +23,6 @@ namespace ErrorCodes
|
|||||||
extern const int LOGICAL_ERROR;
|
extern const int LOGICAL_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
SimpleObjectPool<TaskStatsInfoGetter> task_stats_info_getter_pool;
|
|
||||||
|
|
||||||
// Smoker's implementation to avoid thread_local usage: error: undefined symbol: __cxa_thread_atexit
|
// Smoker's implementation to avoid thread_local usage: error: undefined symbol: __cxa_thread_atexit
|
||||||
#if defined(ARCADIA_ROOT)
|
#if defined(ARCADIA_ROOT)
|
||||||
struct ThreadStatusPtrHolder : ThreadStatusPtr
|
struct ThreadStatusPtrHolder : ThreadStatusPtr
|
||||||
|
@ -21,9 +21,6 @@ namespace ErrorCodes
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
extern SimpleObjectPool<TaskStatsInfoGetter> task_stats_info_getter_pool;
|
|
||||||
|
|
||||||
|
|
||||||
TasksStatsCounters TasksStatsCounters::current()
|
TasksStatsCounters TasksStatsCounters::current()
|
||||||
{
|
{
|
||||||
TasksStatsCounters res;
|
TasksStatsCounters res;
|
||||||
@ -74,7 +71,7 @@ void ThreadStatus::initPerformanceCounters()
|
|||||||
if (TaskStatsInfoGetter::checkPermissions())
|
if (TaskStatsInfoGetter::checkPermissions())
|
||||||
{
|
{
|
||||||
if (!taskstats_getter)
|
if (!taskstats_getter)
|
||||||
taskstats_getter = task_stats_info_getter_pool.getDefault();
|
taskstats_getter = std::make_unique<TaskStatsInfoGetter>();
|
||||||
|
|
||||||
*last_taskstats = TasksStatsCounters::current();
|
*last_taskstats = TasksStatsCounters::current();
|
||||||
}
|
}
|
||||||
|
@ -2,7 +2,6 @@
|
|||||||
|
|
||||||
#include <Common/ProfileEvents.h>
|
#include <Common/ProfileEvents.h>
|
||||||
#include <Common/MemoryTracker.h>
|
#include <Common/MemoryTracker.h>
|
||||||
#include <Common/ObjectPool.h>
|
|
||||||
|
|
||||||
#include <IO/Progress.h>
|
#include <IO/Progress.h>
|
||||||
|
|
||||||
@ -175,8 +174,7 @@ protected:
|
|||||||
std::unique_ptr<TasksStatsCounters> last_taskstats;
|
std::unique_ptr<TasksStatsCounters> last_taskstats;
|
||||||
|
|
||||||
/// Set to non-nullptr only if we have enough capabilities.
|
/// Set to non-nullptr only if we have enough capabilities.
|
||||||
/// We use pool because creation and destruction of TaskStatsInfoGetter objects are expensive.
|
std::unique_ptr<TaskStatsInfoGetter> taskstats_getter;
|
||||||
SimpleObjectPool<TaskStatsInfoGetter>::Pointer taskstats_getter;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user