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

Reply via email to