未验证 提交 a9180984 编写于 作者: A alesapin 提交者: GitHub

Revert "Backport #20224 to 20.12: Fix access control manager destruction order"

上级 38d73ba3
......@@ -328,7 +328,7 @@ struct ContextShared
mutable std::optional<ExternalModelsLoader> external_models_loader;
String default_profile_name; /// Default profile name used for default values.
String system_profile_name; /// Profile used by system processes
std::unique_ptr<AccessControlManager> access_control_manager;
AccessControlManager access_control_manager;
mutable UncompressedCachePtr uncompressed_cache; /// The cache of decompressed blocks.
mutable MarkCachePtr mark_cache; /// Cache of marks in compressed files.
ProcessList process_list; /// Executing queries at the moment.
......@@ -384,8 +384,7 @@ struct ContextShared
Context::ConfigReloadCallback config_reload_callback;
ContextShared()
: access_control_manager(std::make_unique<AccessControlManager>())
, macros(std::make_unique<Macros>())
: macros(std::make_unique<Macros>())
{
/// TODO: make it singleton (?)
static std::atomic<size_t> num_calls{0};
......@@ -432,7 +431,6 @@ struct ContextShared
/// Preemptive destruction is important, because these objects may have a refcount to ContextShared (cyclic reference).
/// TODO: Get rid of this.
access_control_manager.reset();
system_logs.reset();
embedded_dictionaries.reset();
external_dictionaries_loader.reset();
......@@ -635,7 +633,7 @@ void Context::setConfig(const ConfigurationPtr & config)
{
auto lock = getLock();
shared->config = config;
shared->access_control_manager->setExternalAuthenticatorsConfig(*shared->config);
shared->access_control_manager.setExternalAuthenticatorsConfig(*shared->config);
}
const Poco::Util::AbstractConfiguration & Context::getConfigRef() const
......@@ -647,25 +645,25 @@ const Poco::Util::AbstractConfiguration & Context::getConfigRef() const
AccessControlManager & Context::getAccessControlManager()
{
return *shared->access_control_manager;
return shared->access_control_manager;
}
const AccessControlManager & Context::getAccessControlManager() const
{
return *shared->access_control_manager;
return shared->access_control_manager;
}
void Context::setExternalAuthenticatorsConfig(const Poco::Util::AbstractConfiguration & config)
{
auto lock = getLock();
shared->access_control_manager->setExternalAuthenticatorsConfig(config);
shared->access_control_manager.setExternalAuthenticatorsConfig(config);
}
void Context::setUsersConfig(const ConfigurationPtr & config)
{
auto lock = getLock();
shared->users_config = config;
shared->access_control_manager->setUsersConfig(*shared->users_config);
shared->access_control_manager.setUsersConfig(*shared->users_config);
}
ConfigurationPtr Context::getUsersConfig()
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册