Pārlūkot izejas kodu

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

James Clampffer 7 gadi atpakaļ
vecāks
revīzija
23afd50865

+ 1 - 0
hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/rpc/rpc_connection.h

@@ -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();

+ 5 - 0
hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/rpc/rpc_connection_impl.cc

@@ -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");

+ 6 - 4
hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/rpc/rpc_engine.cc

@@ -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(