diff options
| author | nadya73 <[email protected]> | 2024-10-26 11:34:10 +0300 |
|---|---|---|
| committer | nadya73 <[email protected]> | 2024-10-26 11:44:19 +0300 |
| commit | 3ff401d806ef61594cabd6d26cbbd7d6a72845b9 (patch) | |
| tree | 0cc792454ea09daf839d1cbb76b2996354d171ce | |
| parent | 3346937cd6b67cc103d1cc8619c497ed91a0011a (diff) | |
Don't validate TConnectionConfig during postprocessing
Don't validate TConnectionConfig during postprocessing
commit_hash:dee18a41fe6401b67e5d672d2989d1c373149cdb
| -rw-r--r-- | yt/yt/client/api/rpc_proxy/config.cpp | 31 | ||||
| -rw-r--r-- | yt/yt/client/api/rpc_proxy/config.h | 4 | ||||
| -rw-r--r-- | yt/yt/client/api/rpc_proxy/connection_impl.cpp | 5 | ||||
| -rw-r--r-- | yt/yt/client/cache/config.cpp | 4 |
4 files changed, 26 insertions, 18 deletions
diff --git a/yt/yt/client/api/rpc_proxy/config.cpp b/yt/yt/client/api/rpc_proxy/config.cpp index e3ed474ab68..87dfd2b22e4 100644 --- a/yt/yt/client/api/rpc_proxy/config.cpp +++ b/yt/yt/client/api/rpc_proxy/config.cpp @@ -127,19 +127,6 @@ void TConnectionConfig::Register(TRegistrar registrar) .Default(false); registrar.Postprocessor([] (TThis* config) { - if (!config->ProxyEndpoints && !config->ClusterUrl && !config->ProxyAddresses && !config->ProxyUnixDomainSocket) { - THROW_ERROR_EXCEPTION("Either \"endpoints\" or \"cluster_url\" or \"proxy_addresses\" or \"proxy_unix_domain_socket\" must be specified"); - } - if (config->ProxyEndpoints && config->ProxyRole) { - THROW_ERROR_EXCEPTION("\"proxy_role\" is not supported by Service Discovery"); - } - if (config->ProxyAddresses && config->ProxyAddresses->empty()) { - THROW_ERROR_EXCEPTION("\"proxy_addresses\" must not be empty"); - } - if (!config->EnableProxyDiscovery && !config->ProxyAddresses) { - THROW_ERROR_EXCEPTION("If proxy discovery is disabled, \"proxy_addresses\" should be specified"); - } - if (!config->ClusterName && config->ClusterUrl) { config->ClusterName = InferYTClusterFromClusterUrl(*config->ClusterUrl); } @@ -148,4 +135,22 @@ void TConnectionConfig::Register(TRegistrar registrar) //////////////////////////////////////////////////////////////////////////////// +void ValidateConnectionConfig(const TConnectionConfigPtr& config) +{ + if (!config->ProxyEndpoints && !config->ClusterUrl && !config->ProxyAddresses && !config->ProxyUnixDomainSocket) { + THROW_ERROR_EXCEPTION("Either \"endpoints\" or \"cluster_url\" or \"proxy_addresses\" or \"proxy_unix_domain_socket\" must be specified"); + } + if (config->ProxyEndpoints && config->ProxyRole) { + THROW_ERROR_EXCEPTION("\"proxy_role\" is not supported by Service Discovery"); + } + if (config->ProxyAddresses && config->ProxyAddresses->empty()) { + THROW_ERROR_EXCEPTION("\"proxy_addresses\" must not be empty"); + } + if (!config->EnableProxyDiscovery && !config->ProxyAddresses) { + THROW_ERROR_EXCEPTION("If proxy discovery is disabled, \"proxy_addresses\" should be specified"); + } +} + +//////////////////////////////////////////////////////////////////////////////// + } // namespace NYT::NApi::NRpcProxy diff --git a/yt/yt/client/api/rpc_proxy/config.h b/yt/yt/client/api/rpc_proxy/config.h index b31fdaa2c8c..793c48dce6b 100644 --- a/yt/yt/client/api/rpc_proxy/config.h +++ b/yt/yt/client/api/rpc_proxy/config.h @@ -90,4 +90,8 @@ DEFINE_REFCOUNTED_TYPE(TConnectionConfig) //////////////////////////////////////////////////////////////////////////////// +void ValidateConnectionConfig(const TConnectionConfigPtr& config); + +//////////////////////////////////////////////////////////////////////////////// + } // namespace NYT::NApi::NRpcProxy diff --git a/yt/yt/client/api/rpc_proxy/connection_impl.cpp b/yt/yt/client/api/rpc_proxy/connection_impl.cpp index 6c76bc35b68..8bc17c3c524 100644 --- a/yt/yt/client/api/rpc_proxy/connection_impl.cpp +++ b/yt/yt/client/api/rpc_proxy/connection_impl.cpp @@ -212,9 +212,10 @@ private: TFuture<IChannelPtr> Channel_; }; -TConnectionConfigPtr GetPostprocessedConfig(TConnectionConfigPtr config) +TConnectionConfigPtr GetPostprocessedConfigAndValidate(TConnectionConfigPtr config) { config->Postprocess(); + ValidateConnectionConfig(config); return config; } @@ -223,7 +224,7 @@ TConnectionConfigPtr GetPostprocessedConfig(TConnectionConfigPtr config) //////////////////////////////////////////////////////////////////////////////// TConnection::TConnection(TConnectionConfigPtr config, TConnectionOptions options) - : Config_(GetPostprocessedConfig(std::move(config))) + : Config_(GetPostprocessedConfigAndValidate(std::move(config))) , ConnectionId_(TGuid::Create()) , LoggingTag_(MakeConnectionLoggingTag(Config_, ConnectionId_)) , ClusterId_(MakeConnectionClusterId(Config_)) diff --git a/yt/yt/client/cache/config.cpp b/yt/yt/client/cache/config.cpp index f501f38cb47..7ebaeed1785 100644 --- a/yt/yt/client/cache/config.cpp +++ b/yt/yt/client/cache/config.cpp @@ -10,10 +10,8 @@ using namespace NApi; void TClientsCacheConfig::Register(TRegistrar registrar) { - // TODO(shishmak): Need to handle default config properly. - // Now it fails postprocess validation when set to default, so it made optional. registrar.Parameter("default_config", &TThis::DefaultConfig) - .Optional(); + .DefaultNew(); registrar.Parameter("cluster_configs", &TThis::ClusterConfigs) .Default(); } |
