summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornadya73 <[email protected]>2024-10-26 11:34:10 +0300
committernadya73 <[email protected]>2024-10-26 11:44:19 +0300
commit3ff401d806ef61594cabd6d26cbbd7d6a72845b9 (patch)
tree0cc792454ea09daf839d1cbb76b2996354d171ce
parent3346937cd6b67cc103d1cc8619c497ed91a0011a (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.cpp31
-rw-r--r--yt/yt/client/api/rpc_proxy/config.h4
-rw-r--r--yt/yt/client/api/rpc_proxy/connection_impl.cpp5
-rw-r--r--yt/yt/client/cache/config.cpp4
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();
}