From 869f2e3dda80e79284706450f0c7edf17c7996a0 Mon Sep 17 00:00:00 2001 From: Vincent Date: Fri, 16 Dec 2016 14:59:14 -0800 Subject: [PATCH] HBASE-17328 Properly dispose of looped replication peers --- .../hadoop/hbase/replication/regionserver/ReplicationSource.java | 2 ++ .../hbase/replication/regionserver/ReplicationSourceManager.java | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.java index 9b0dfff..d17fd7b 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.java @@ -268,6 +268,8 @@ public class ReplicationSource extends Thread this.terminate("ClusterId " + clusterId + " is replicating to itself: peerClusterId " + peerClusterId + " which is not allowed by ReplicationEndpoint:" + replicationEndpoint.getClass().getName(), null, false); + this.manager.removeSource(this); + this.replicationQueues.removeQueue(peerId); } LOG.info("Replicating "+clusterId + " -> " + peerClusterId); diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceManager.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceManager.java index 8ba42ff..12b40af 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceManager.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceManager.java @@ -507,6 +507,10 @@ public class ReplicationSourceManager implements ReplicationListener { deleteSource(id, true); } + public boolean removeSource(ReplicationSourceInterface toRemove) { + return this.sources.remove(toRemove); + } + @Override public void regionServerRemoved(String regionserver) { transferQueues(regionserver); -- 2.7.4