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:
Alexey Zatelepin 2019-01-09 20:52:25 +03:00
parent d9bc934b7d
commit 006a764df9
3 changed files with 2 additions and 10 deletions

View File

@ -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

View File

@ -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();
} }

View File

@ -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;
}; };
} }