This is an automated email from the ASF dual-hosted git repository.

ayushsaxena 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 8e779a1  HDFS-14721. RBF: ProxyOpComplete is not accurate in 
FederationRPCPerformanceMonitor. Contributed by xuzq.
8e779a1 is described below

commit 8e779a151e20528ceda1b5b44812412f4ae7f83d
Author: Ayush Saxena <ayushsax...@apache.org>
AuthorDate: Thu Aug 29 20:08:38 2019 +0530

    HDFS-14721. RBF: ProxyOpComplete is not accurate in 
FederationRPCPerformanceMonitor. Contributed by xuzq.
---
 .../server/federation/router/RouterRpcClient.java  | 10 ++++-----
 .../router/TestRouterRpcMultiDestination.java      | 25 ++++++++++++++++++++++
 2 files changed, 29 insertions(+), 6 deletions(-)

diff --git 
a/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/router/RouterRpcClient.java
 
b/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/router/RouterRpcClient.java
index 2996357..563f3d0 100644
--- 
a/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/router/RouterRpcClient.java
+++ 
b/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/router/RouterRpcClient.java
@@ -432,8 +432,11 @@ public class RouterRpcClient {
           if (this.rpcMonitor != null) {
             this.rpcMonitor.proxyOpComplete(true);
           }
+          RemoteException re = (RemoteException) ioe;
+          ioe = re.unwrapRemoteException();
+          ioe = getCleanException(ioe);
           // RemoteException returned by NN
-          throw (RemoteException) ioe;
+          throw ioe;
         } else if (ioe instanceof ConnectionNullException) {
           if (this.rpcMonitor != null) {
             this.rpcMonitor.proxyOpFailureCommunicate();
@@ -553,11 +556,6 @@ public class RouterRpcClient {
             throw new StandbyException(ioe.getMessage());
           }
         } else {
-          if (ioe instanceof RemoteException) {
-            RemoteException re = (RemoteException) ioe;
-            ioe = re.unwrapRemoteException();
-            ioe = getCleanException(ioe);
-          }
           throw ioe;
         }
       } else {
diff --git 
a/hadoop-hdfs-project/hadoop-hdfs-rbf/src/test/java/org/apache/hadoop/hdfs/server/federation/router/TestRouterRpcMultiDestination.java
 
b/hadoop-hdfs-project/hadoop-hdfs-rbf/src/test/java/org/apache/hadoop/hdfs/server/federation/router/TestRouterRpcMultiDestination.java
index 687e578..30a47a4 100644
--- 
a/hadoop-hdfs-project/hadoop-hdfs-rbf/src/test/java/org/apache/hadoop/hdfs/server/federation/router/TestRouterRpcMultiDestination.java
+++ 
b/hadoop-hdfs-project/hadoop-hdfs-rbf/src/test/java/org/apache/hadoop/hdfs/server/federation/router/TestRouterRpcMultiDestination.java
@@ -188,6 +188,31 @@ public class TestRouterRpcMultiDestination extends 
TestRouterRpc {
         requiredPaths.size(), partialListing.length);
   }
 
+  /**
+   * Verify the metric ProxyOp with RemoteException.
+   */
+  @Test
+  public void testProxyOpWithRemoteException() throws IOException {
+    final String testPath = "/proxy_op/remote_exception.txt";
+    final FederationRPCMetrics metrics = getRouterContext().
+        getRouter().getRpcServer().getRPCMetrics();
+    String ns1 = getCluster().getNameservices().get(1);
+    final FileSystem fileSystem1 = getCluster().
+        getNamenode(ns1, null).getFileSystem();
+
+    try {
+      // Create the test file in ns1.
+      createFile(fileSystem1, testPath, 32);
+
+      long beforeProxyOp = metrics.getProxyOps();
+      // First retry nn0 with remoteException then nn1.
+      getRouterProtocol().getBlockLocations(testPath, 0, 1);
+      assertEquals(2, metrics.getProxyOps() - beforeProxyOp);
+    } finally {
+      fileSystem1.delete(new Path(testPath), true);
+    }
+  }
+
   @Override
   public void testProxyListFiles() throws IOException, InterruptedException,
       URISyntaxException, NoSuchMethodException, SecurityException {


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