HDFS-11908: libhdfs++: Authentication failure when first NN of a kerberized HA cluster is standby. Contributed by James Clampffer

This commit is contained in:
James Clampffer 2017-07-10 13:47:51 -04:00
parent e64ba87486
commit 23afd50865
3 changed files with 12 additions and 4 deletions

View File

@ -80,6 +80,7 @@ class RpcConnection : public std::enable_shared_from_this<RpcConnection> {
void SetEventHandlers(std::shared_ptr<LibhdfsEvents> event_handlers);
void SetClusterName(std::string cluster_name);
void SetAuthInfo(const AuthInfo& auth_info);
LockFreeRpcEngine *engine() { return engine_; }
::asio::io_service &io_service();

View File

@ -383,6 +383,11 @@ void RpcConnection::SetClusterName(std::string cluster_name) {
cluster_name_ = cluster_name;
}
void RpcConnection::SetAuthInfo(const AuthInfo& auth_info) {
std::lock_guard<std::mutex> state_lock(connection_state_lock_);
auth_info_ = auth_info;
}
void RpcConnection::CommsError(const Status &status) {
assert(lock_held(connection_state_lock_)); // Must be holding lock before calling
LOG_DEBUG(kRPC, << "RpcConnection::CommsError called");

View File

@ -176,10 +176,12 @@ std::shared_ptr<RpcConnection> RpcEngine::NewConnection()
std::shared_ptr<RpcConnection> RpcEngine::InitializeConnection()
{
std::shared_ptr<RpcConnection> result = NewConnection();
result->SetEventHandlers(event_handlers_);
result->SetClusterName(cluster_name_);
return result;
std::shared_ptr<RpcConnection> newConn = NewConnection();
newConn->SetEventHandlers(event_handlers_);
newConn->SetClusterName(cluster_name_);
newConn->SetAuthInfo(auth_info_);
return newConn;
}
void RpcEngine::AsyncRpcCommsError(