Repository: hadoop
Updated Branches:
  refs/heads/HDFS-8707 1749462e3 -> e73bd5352


HDFS-11730: libhdfs++: RpcConnection should handle authorization error call id. 
 Contributed by James Clampffer


Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/e73bd535
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/e73bd535
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/e73bd535

Branch: refs/heads/HDFS-8707
Commit: e73bd5352533a56db3bc18c3596ca494b66f47ce
Parents: 1749462
Author: James <j...@apache.org>
Authored: Wed May 3 12:03:29 2017 -0400
Committer: James <j...@apache.org>
Committed: Wed May 3 12:03:29 2017 -0400

----------------------------------------------------------------------
 .../src/main/native/libhdfspp/include/hdfspp/status.h  |  2 ++
 .../src/main/native/libhdfspp/lib/common/status.cc     | 13 +++++++++++++
 .../native/libhdfspp/lib/rpc/rpc_connection_impl.cc    |  4 +++-
 3 files changed, 18 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hadoop/blob/e73bd535/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/include/hdfspp/status.h
----------------------------------------------------------------------
diff --git 
a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/include/hdfspp/status.h
 
b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/include/hdfspp/status.h
index d2c32b2..6fc00b1 100644
--- 
a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/include/hdfspp/status.h
+++ 
b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/include/hdfspp/status.h
@@ -44,6 +44,8 @@ class Status {
   static Status Error(const char *error_message);
   static Status AuthenticationFailed();
   static Status AuthenticationFailed(const char *msg);
+  static Status AuthorizationFailed();
+  static Status AuthorizationFailed(const char *msg);
   static Status Canceled();
   static Status PathNotFound(const char *msg);
   static Status InvalidOffset(const char *msg);

http://git-wip-us.apache.org/repos/asf/hadoop/blob/e73bd535/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/status.cc
----------------------------------------------------------------------
diff --git 
a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/status.cc
 
b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/status.cc
index 590a036..5903553 100644
--- 
a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/status.cc
+++ 
b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/common/status.cc
@@ -143,6 +143,19 @@ Status Status::AuthenticationFailed(const char *msg) {
   return Status(kAuthenticationFailed, formatted.c_str());
 }
 
+Status Status::AuthorizationFailed() {
+  return Status::AuthorizationFailed(nullptr);
+}
+
+Status Status::AuthorizationFailed(const char *msg) {
+  std::string formatted = "AuthorizationFailed";
+  if(msg) {
+    formatted += ": ";
+    formatted += msg;
+  }
+  return Status(kPermissionDenied, formatted.c_str());
+}
+
 Status Status::Canceled() {
   return Status(kOperationCanceled, "Operation canceled");
 }

http://git-wip-us.apache.org/repos/asf/hadoop/blob/e73bd535/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/rpc/rpc_connection_impl.cc
----------------------------------------------------------------------
diff --git 
a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/rpc/rpc_connection_impl.cc
 
b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/rpc/rpc_connection_impl.cc
index 7accaf8..1012a37 100644
--- 
a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/rpc/rpc_connection_impl.cc
+++ 
b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/lib/rpc/rpc_connection_impl.cc
@@ -175,9 +175,11 @@ Status 
RpcConnection::HandleRpcResponse(std::shared_ptr<Response> response) {
 
   auto req = RemoveFromRunningQueue(h.callid());
   if (!req) {
-    LOG_WARN(kRPC, << "RPC response with Unknown call id " << h.callid());
+    LOG_WARN(kRPC, << "RPC response with Unknown call id " << 
(int32_t)h.callid());
     if((int32_t)h.callid() == RpcEngine::kCallIdSasl) {
       return Status::AuthenticationFailed("You have an unsecured client 
connecting to a secured server");
+    } else if((int32_t)h.callid() == RpcEngine::kCallIdAuthorizationFailed) {
+      return Status::AuthorizationFailed("RPC call id indicates an 
authorization failure");
     } else {
       return Status::Error("Rpc response with unknown call id");
     }


---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscr...@hadoop.apache.org
For additional commands, e-mail: common-commits-h...@hadoop.apache.org

Reply via email to