hbase-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From te...@apache.org
Subject svn commit: r1545792 - /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/fs/HFileSystem.java
Date Tue, 26 Nov 2013 19:31:12 GMT
Author: tedyu
Date: Tue Nov 26 19:31:12 2013
New Revision: 1545792

URL: http://svn.apache.org/r1545792
Log:
HBASE-10029 Proxy created by HFileSystem#createReorderingProxy() should properly close when
connecting to HA namenode


Modified:
    hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/fs/HFileSystem.java

Modified: hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/fs/HFileSystem.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/fs/HFileSystem.java?rev=1545792&r1=1545791&r2=1545792&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/fs/HFileSystem.java (original)
+++ hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/fs/HFileSystem.java Tue
Nov 26 19:31:12 2013
@@ -47,6 +47,7 @@ import org.apache.hadoop.hdfs.protocol.D
 import org.apache.hadoop.hdfs.protocol.LocatedBlock;
 import org.apache.hadoop.hdfs.protocol.LocatedBlocks;
 import org.apache.hadoop.io.Closeable;
+import org.apache.hadoop.ipc.RPC;
 import org.apache.hadoop.util.Progressable;
 import org.apache.hadoop.util.ReflectionUtils;
 
@@ -262,16 +263,25 @@ public class HFileSystem extends FilterF
             new InvocationHandler() {
               public Object invoke(Object proxy, Method method,
                                    Object[] args) throws Throwable {
-                try { 
-                  Object res = method.invoke(cp, args);
-                  if (res != null && args != null && args.length == 3
-                      && "getBlockLocations".equals(method.getName())
-                      && res instanceof LocatedBlocks
-                      && args[0] instanceof String
-                      && args[0] != null) {
-                    lrb.reorderBlocks(conf, (LocatedBlocks) res, (String) args[0]);
+                try {
+                  if (args.length == 0 && "close".equals(method.getName())) {
+                    if (cp instanceof Closeable) {
+                      ((Closeable)cp).close();
+                    } else {
+                      RPC.stopProxy(cp);
+                    }
+                    return null;
+                  } else {
+                    Object res = method.invoke(cp, args);
+                    if (res != null && args != null && args.length == 3
+                        && "getBlockLocations".equals(method.getName())
+                        && res instanceof LocatedBlocks
+                        && args[0] instanceof String
+                        && args[0] != null) {
+                      lrb.reorderBlocks(conf, (LocatedBlocks) res, (String) args[0]);
+                    }
+                    return res;
                   }
-                  return res;
                 } catch  (InvocationTargetException ite) {
                   // We will have this for all the exception, checked on not, sent
                   //  by any layer, including the functional exception



Mime
View raw message