From df5c1ca854857930e0a8dac2b068b90c665c6842 Mon Sep 17 00:00:00 2001 From: Duo Zhang Date: Thu, 15 Sep 2022 15:27:06 +0800 Subject: [PATCH] HBASE-27368 Do not need to throw IllegalStateException when peer is not active in ReplicationSource.initialize (#4779) Signed-off-by: Xin Sun (cherry picked from commit 460bb47c04cf2ffa71c23b80c5680d8cbb69234b) --- .../regionserver/ReplicationSource.java | 24 +++++++------------ 1 file changed, 8 insertions(+), 16 deletions(-) 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 4857e4c617e..a827a2555fb 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 @@ -425,7 +425,7 @@ public class ReplicationSource implements ReplicationSourceInterface { return walEntryFilter; } - protected final void uncaughtException(Thread t, Throwable e, ReplicationSourceManager manager, + private void uncaughtException(Thread t, Throwable e, ReplicationSourceManager manager, String peerId) { RSRpcServices.exitIfOOME(e); LOG.error("Unexpected exception in {} currentPath={}", t.getName(), getCurrentPath(), e); @@ -552,15 +552,10 @@ public class ReplicationSource implements ReplicationSourceInterface { } if (!this.isSourceActive()) { + // this means the server is shutting down or the source is terminated, just give up + // initializing setSourceStartupStatus(false); - if (Thread.currentThread().isInterrupted()) { - // If source is not running and thread is interrupted this means someone has tried to - // remove this peer. - return; - } - - retryStartup.set(!this.abortOnError); - throw new IllegalStateException("Source should be active."); + return; } sleepMultiplier = 1; @@ -582,15 +577,12 @@ public class ReplicationSource implements ReplicationSourceInterface { } if (!this.isSourceActive()) { + // this means the server is shutting down or the source is terminated, just give up + // initializing setSourceStartupStatus(false); - if (Thread.currentThread().isInterrupted()) { - // If source is not running and thread is interrupted this means someone has tried to - // remove this peer. - return; - } - retryStartup.set(!this.abortOnError); - throw new IllegalStateException("Source should be active."); + return; } + LOG.info("{} queueId={} (queues={}) is replicating from cluster={} to cluster={}", logPeerId(), this.replicationQueueInfo.getQueueId(), logQueue.getNumQueues(), clusterId, peerClusterId); initializeWALEntryFilter(peerClusterId);