mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-27 01:51:59 +00:00
Add warnings about using krb5 parameters
This commit is contained in:
parent
d93fd3bd2d
commit
6e28275569
@ -20,9 +20,10 @@ namespace ErrorCodes
|
|||||||
{
|
{
|
||||||
extern const int BAD_ARGUMENTS;
|
extern const int BAD_ARGUMENTS;
|
||||||
extern const int NETWORK_ERROR;
|
extern const int NETWORK_ERROR;
|
||||||
|
#if USE_KRB5
|
||||||
extern const int EXCESSIVE_ELEMENT_IN_CONFIG;
|
extern const int EXCESSIVE_ELEMENT_IN_CONFIG;
|
||||||
extern const int NO_ELEMENTS_IN_CONFIG;
|
|
||||||
extern const int KERBEROS_ERROR;
|
extern const int KERBEROS_ERROR;
|
||||||
|
#endif // USE_KRB5
|
||||||
}
|
}
|
||||||
|
|
||||||
const String HDFSBuilderWrapper::CONFIG_PREFIX = "hdfs";
|
const String HDFSBuilderWrapper::CONFIG_PREFIX = "hdfs";
|
||||||
@ -43,19 +44,28 @@ void HDFSBuilderWrapper::loadFromConfig(const Poco::Util::AbstractConfiguration
|
|||||||
String key_name;
|
String key_name;
|
||||||
if (key == "hadoop_kerberos_keytab")
|
if (key == "hadoop_kerberos_keytab")
|
||||||
{
|
{
|
||||||
|
#if USE_KRB5
|
||||||
need_kinit = true;
|
need_kinit = true;
|
||||||
hadoop_kerberos_keytab = config.getString(key_path);
|
hadoop_kerberos_keytab = config.getString(key_path);
|
||||||
|
#else // USE_KRB5
|
||||||
|
LOG_WARNING(&Poco::Logger::get("HDFSClient"), "hadoop_kerberos_keytab parameter is ignored because ClickHouse was built without support of krb5 library.");
|
||||||
|
#endif // USE_KRB5
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
else if (key == "hadoop_kerberos_principal")
|
else if (key == "hadoop_kerberos_principal")
|
||||||
{
|
{
|
||||||
|
#if USE_KRB5
|
||||||
need_kinit = true;
|
need_kinit = true;
|
||||||
hadoop_kerberos_principal = config.getString(key_path);
|
hadoop_kerberos_principal = config.getString(key_path);
|
||||||
hdfsBuilderSetPrincipal(hdfs_builder, hadoop_kerberos_principal.c_str());
|
hdfsBuilderSetPrincipal(hdfs_builder, hadoop_kerberos_principal.c_str());
|
||||||
|
#else // USE_KRB5
|
||||||
|
LOG_WARNING(&Poco::Logger::get("HDFSClient"), "hadoop_kerberos_principal parameter is ignored because ClickHouse was built without support of krb5 library.");
|
||||||
|
#endif // USE_KRB5
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
else if (key == "hadoop_security_kerberos_ticket_cache_path")
|
else if (key == "hadoop_security_kerberos_ticket_cache_path")
|
||||||
{
|
{
|
||||||
|
#if USE_KRB5
|
||||||
if (isUser)
|
if (isUser)
|
||||||
{
|
{
|
||||||
throw Exception("hadoop.security.kerberos.ticket.cache.path cannot be set per user",
|
throw Exception("hadoop.security.kerberos.ticket.cache.path cannot be set per user",
|
||||||
@ -64,6 +74,9 @@ void HDFSBuilderWrapper::loadFromConfig(const Poco::Util::AbstractConfiguration
|
|||||||
|
|
||||||
hadoop_security_kerberos_ticket_cache_path = config.getString(key_path);
|
hadoop_security_kerberos_ticket_cache_path = config.getString(key_path);
|
||||||
// standard param - pass further
|
// standard param - pass further
|
||||||
|
#else // USE_KRB5
|
||||||
|
LOG_WARNING(&Poco::Logger::get("HDFSClient"), "hadoop.security.kerberos.ticket.cache.path parameter is ignored because ClickHouse was built without support of krb5 library.");
|
||||||
|
#endif // USE_KRB5
|
||||||
}
|
}
|
||||||
|
|
||||||
key_name = boost::replace_all_copy(key, "_", ".");
|
key_name = boost::replace_all_copy(key, "_", ".");
|
||||||
@ -73,9 +86,9 @@ void HDFSBuilderWrapper::loadFromConfig(const Poco::Util::AbstractConfiguration
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if USE_KRB5
|
||||||
void HDFSBuilderWrapper::runKinit()
|
void HDFSBuilderWrapper::runKinit()
|
||||||
{
|
{
|
||||||
#if USE_KRB5
|
|
||||||
LOG_DEBUG(&Poco::Logger::get("HDFSClient"), "Running KerberosInit");
|
LOG_DEBUG(&Poco::Logger::get("HDFSClient"), "Running KerberosInit");
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@ -86,8 +99,8 @@ void HDFSBuilderWrapper::runKinit()
|
|||||||
throw Exception("KerberosInit failure: "+ getExceptionMessage(e, false), ErrorCodes::KERBEROS_ERROR);
|
throw Exception("KerberosInit failure: "+ getExceptionMessage(e, false), ErrorCodes::KERBEROS_ERROR);
|
||||||
}
|
}
|
||||||
LOG_DEBUG(&Poco::Logger::get("HDFSClient"), "Finished KerberosInit");
|
LOG_DEBUG(&Poco::Logger::get("HDFSClient"), "Finished KerberosInit");
|
||||||
#endif // USE_KRB5
|
|
||||||
}
|
}
|
||||||
|
#endif // USE_KRB5
|
||||||
|
|
||||||
HDFSBuilderWrapper createHDFSBuilder(const String & uri_str, const Poco::Util::AbstractConfiguration & config)
|
HDFSBuilderWrapper createHDFSBuilder(const String & uri_str, const Poco::Util::AbstractConfiguration & config)
|
||||||
{
|
{
|
||||||
|
@ -68,8 +68,6 @@ public:
|
|||||||
private:
|
private:
|
||||||
void loadFromConfig(const Poco::Util::AbstractConfiguration & config, const String & prefix, bool isUser = false);
|
void loadFromConfig(const Poco::Util::AbstractConfiguration & config, const String & prefix, bool isUser = false);
|
||||||
|
|
||||||
void runKinit();
|
|
||||||
|
|
||||||
// hdfs builder relies on an external config data storage
|
// hdfs builder relies on an external config data storage
|
||||||
std::pair<String, String>& keep(const String & k, const String & v)
|
std::pair<String, String>& keep(const String & k, const String & v)
|
||||||
{
|
{
|
||||||
@ -77,12 +75,15 @@ private:
|
|||||||
}
|
}
|
||||||
|
|
||||||
hdfsBuilder * hdfs_builder;
|
hdfsBuilder * hdfs_builder;
|
||||||
|
std::vector<std::pair<String, String>> config_stor;
|
||||||
|
|
||||||
|
#if USE_KRB5
|
||||||
|
void runKinit();
|
||||||
String hadoop_kerberos_keytab;
|
String hadoop_kerberos_keytab;
|
||||||
String hadoop_kerberos_principal;
|
String hadoop_kerberos_principal;
|
||||||
String hadoop_security_kerberos_ticket_cache_path;
|
String hadoop_security_kerberos_ticket_cache_path;
|
||||||
|
|
||||||
std::vector<std::pair<String, String>> config_stor;
|
|
||||||
bool need_kinit{false};
|
bool need_kinit{false};
|
||||||
|
#endif // USE_KRB5
|
||||||
};
|
};
|
||||||
|
|
||||||
using HDFSFSPtr = std::unique_ptr<std::remove_pointer_t<hdfsFS>, detail::HDFSFsDeleter>;
|
using HDFSFSPtr = std::unique_ptr<std::remove_pointer_t<hdfsFS>, detail::HDFSFsDeleter>;
|
||||||
|
Loading…
Reference in New Issue
Block a user