From bf683b01bc18c79bbd5b8fc0f8b723f6bff1d470 Mon Sep 17 00:00:00 2001 From: Vincent Date: Fri, 16 Dec 2016 15:01:13 -0800 Subject: [PATCH] HBASE-17328 Properly dispose of looped replication peers --- .../hadoop/hbase/replication/regionserver/ReplicationSource.java | 4 ++++ .../hbase/replication/regionserver/ReplicationSourceManager.java | 4 ++++ 2 files changed, 8 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 a6fe0fb..42dccc1 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 @@ -327,6 +327,10 @@ 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); + uninitialize(); + return; } LOG.info("Replicating " + clusterId + " -> " + peerClusterId); // start workers 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 fa6f894..045b875 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 @@ -591,6 +591,10 @@ public class ReplicationSourceManager implements ReplicationListener { } } + public boolean removeSource(ReplicationSourceInterface toRemove) { + return this.sources.remove(toRemove); + } + @Override public void regionServerRemoved(String regionserver) { transferQueues(regionserver); -- 2.7.4