Repository: hbase
Updated Branches:
  refs/heads/branch-1.0 b237f792c -> 9769fb6d9


HBASE-13131 ReplicationAdmin must clean up connections if constructor fails.


Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/9769fb6d
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/9769fb6d
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/9769fb6d

Branch: refs/heads/branch-1.0
Commit: 9769fb6d94d2ba3e41b1ff288d15a9a6d32ea9df
Parents: b237f79
Author: Sean Busbey <bus...@apache.org>
Authored: Sat Feb 28 19:58:30 2015 -0600
Committer: Sean Busbey <bus...@apache.org>
Committed: Sat Feb 28 20:06:21 2015 -0600

----------------------------------------------------------------------
 .../client/replication/ReplicationAdmin.java    | 33 ++++++++++++++------
 1 file changed, 24 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/9769fb6d/hbase-client/src/main/java/org/apache/hadoop/hbase/client/replication/ReplicationAdmin.java
----------------------------------------------------------------------
diff --git 
a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/replication/ReplicationAdmin.java
 
b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/replication/ReplicationAdmin.java
index cd56261..2ada823 100644
--- 
a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/replication/ReplicationAdmin.java
+++ 
b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/replication/ReplicationAdmin.java
@@ -117,16 +117,31 @@ public class ReplicationAdmin implements Closeable {
           "enable it in order to use replication");
     }
     this.connection = ConnectionFactory.createConnection(conf);
-    zkw = createZooKeeperWatcher();
     try {
-      this.replicationPeers = ReplicationFactory.getReplicationPeers(zkw, 
conf, this.connection);
-      this.replicationPeers.init();
-      this.replicationQueuesClient =
-          ReplicationFactory.getReplicationQueuesClient(zkw, conf, 
this.connection);
-      this.replicationQueuesClient.init();
-
-    } catch (ReplicationException e) {
-      throw new IOException("Error initializing the replication admin 
client.", e);
+      zkw = createZooKeeperWatcher();
+      try {
+        this.replicationPeers = ReplicationFactory.getReplicationPeers(zkw, 
conf, this.connection);
+        this.replicationPeers.init();
+        this.replicationQueuesClient =
+            ReplicationFactory.getReplicationQueuesClient(zkw, conf, 
this.connection);
+        this.replicationQueuesClient.init();
+      } catch (Exception exception) {
+        if (zkw != null) {
+          zkw.close();
+        }
+        throw exception;
+      }
+    } catch (Exception exception) {
+      if (connection != null) {
+        connection.close();
+      }
+      if (exception instanceof IOException) {
+        throw (IOException) exception;
+      } else if (exception instanceof RuntimeException) {
+        throw (RuntimeException) exception;
+      } else {
+        throw new IOException("Error initializing the replication admin 
client.", exception);
+      }
     }
   }
 

Reply via email to