This is an automated email from the ASF dual-hosted git repository. keepromise pushed a commit to branch trunk in repository https://gitbox.apache.org/repos/asf/hadoop.git
The following commit(s) were added to refs/heads/trunk by this push: new 3bd3bf86e70 HDFS-17793. [ARR] RBF: Enable the router asynchronous RPC feature to handle DelegationToken request errors. (#7714). Contributed by zhangxiping1. 3bd3bf86e70 is described below commit 3bd3bf86e70fe13338f3074646a90bb6171ee53c Author: 章锡平 <40832063+zhangxipi...@users.noreply.github.com> AuthorDate: Fri May 30 17:44:00 2025 +0800 HDFS-17793. [ARR] RBF: Enable the router asynchronous RPC feature to handle DelegationToken request errors. (#7714). Contributed by zhangxiping1. Reviewed-by: Jian Zhang <keeprom...@apache.org> --- .../federation/router/RouterClientProtocol.java | 4 ++++ .../router/async/RouterAsyncClientProtocol.java | 27 ++++++++++++++++++++++ .../router/async/TestRouterAsyncRpc.java | 9 ++++++++ 3 files changed, 40 insertions(+) diff --git a/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/router/RouterClientProtocol.java b/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/router/RouterClientProtocol.java index 361bdf21fb4..41454458eb8 100644 --- a/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/router/RouterClientProtocol.java +++ b/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/router/RouterClientProtocol.java @@ -2524,4 +2524,8 @@ public void setServerDefaultsLastUpdate(long serverDefaultsLastUpdate) { public RouterFederationRename getRbfRename() { return rbfRename; } + + public RouterSecurityManager getSecurityManager() { + return securityManager; + } } diff --git a/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/router/async/RouterAsyncClientProtocol.java b/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/router/async/RouterAsyncClientProtocol.java index d3903cbfef7..b64ebb31f96 100644 --- a/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/router/async/RouterAsyncClientProtocol.java +++ b/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/router/async/RouterAsyncClientProtocol.java @@ -37,6 +37,7 @@ import org.apache.hadoop.hdfs.protocol.ReplicatedBlockStats; import org.apache.hadoop.hdfs.protocol.RollingUpgradeInfo; import org.apache.hadoop.hdfs.protocol.UnresolvedPathException; +import org.apache.hadoop.hdfs.security.token.delegation.DelegationTokenIdentifier; import org.apache.hadoop.hdfs.server.federation.resolver.ActiveNamenodeResolver; import org.apache.hadoop.hdfs.server.federation.resolver.FederationNamespaceInfo; import org.apache.hadoop.hdfs.server.federation.resolver.FileSubclusterResolver; @@ -60,7 +61,9 @@ import org.apache.hadoop.hdfs.server.namenode.NameNode; import org.apache.hadoop.hdfs.server.protocol.DatanodeStorageReport; import org.apache.hadoop.io.EnumSetWritable; +import org.apache.hadoop.io.Text; import org.apache.hadoop.security.UserGroupInformation; +import org.apache.hadoop.security.token.Token; import org.apache.hadoop.util.Time; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -1166,4 +1169,28 @@ public Path getEnclosingRoot(String src) throws IOException { return asyncReturn(Path.class); } + @Override + public Token<DelegationTokenIdentifier> getDelegationToken(Text renewer) + throws IOException { + rpcServer.checkOperation(NameNode.OperationCategory.WRITE, true); + asyncComplete(getSecurityManager().getDelegationToken(renewer)); + return asyncReturn(Token.class); + } + + @Override + public long renewDelegationToken(Token<DelegationTokenIdentifier> token) + throws IOException { + rpcServer.checkOperation(NameNode.OperationCategory.WRITE, true); + asyncComplete(getSecurityManager().renewDelegationToken(token)); + return asyncReturn(Long.class); + } + + @Override + public void cancelDelegationToken(Token<DelegationTokenIdentifier> token) + throws IOException { + rpcServer.checkOperation(NameNode.OperationCategory.WRITE, true); + getSecurityManager().cancelDelegationToken(token); + asyncComplete(null); + } + } diff --git a/hadoop-hdfs-project/hadoop-hdfs-rbf/src/test/java/org/apache/hadoop/hdfs/server/federation/router/async/TestRouterAsyncRpc.java b/hadoop-hdfs-project/hadoop-hdfs-rbf/src/test/java/org/apache/hadoop/hdfs/server/federation/router/async/TestRouterAsyncRpc.java index 42ab49affd0..aa0e2c5cd6c 100644 --- a/hadoop-hdfs-project/hadoop-hdfs-rbf/src/test/java/org/apache/hadoop/hdfs/server/federation/router/async/TestRouterAsyncRpc.java +++ b/hadoop-hdfs-project/hadoop-hdfs-rbf/src/test/java/org/apache/hadoop/hdfs/server/federation/router/async/TestRouterAsyncRpc.java @@ -36,6 +36,7 @@ import static org.apache.hadoop.hdfs.server.federation.router.RBFConfigKeys.DFS_ROUTER_FAIRNESS_POLICY_CONTROLLER_CLASS; import static org.apache.hadoop.hdfs.server.federation.router.async.utils.AsyncUtil.syncReturn; import static org.junit.jupiter.api.Assertions.assertArrayEquals; +import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; import static org.junit.jupiter.api.Assertions.assertNull; /** @@ -89,4 +90,12 @@ public void testgetGroupsForUser() throws Exception { public void testConcurrentCallExecutorInitial() { assertNull(rndRouter.getRouterRpcClient().getExecutorService()); } + + @Test + public void testGetDelegationTokenAsyncRpc() throws Exception { + UserGroupInformation ugi = UserGroupInformation.getCurrentUser(); + assertDoesNotThrow(() -> { + rndRouter.getFileSystem().getDelegationToken(ugi.getShortUserName()); + }); + } } --------------------------------------------------------------------- To unsubscribe, e-mail: common-commits-unsubscr...@hadoop.apache.org For additional commands, e-mail: common-commits-h...@hadoop.apache.org