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