You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by st...@apache.org on 2020/04/09 23:43:28 UTC
[hbase] branch branch-2.2 updated: HBASE-24074
ConcurrentModificationException occured in ReplicationSourceManager while
refreshing the peer (#1471)
This is an automated email from the ASF dual-hosted git repository.
stack pushed a commit to branch branch-2.2
in repository https://gitbox.apache.org/repos/asf/hbase.git
The following commit(s) were added to refs/heads/branch-2.2 by this push:
new a521a80 HBASE-24074 ConcurrentModificationException occured in ReplicationSourceManager while refreshing the peer (#1471)
a521a80 is described below
commit a521a80c4b9a8b0749c368d1ff66fea2ed2d77a2
Author: Pankaj <pa...@apache.org>
AuthorDate: Fri Apr 10 05:10:15 2020 +0530
HBASE-24074 ConcurrentModificationException occured in ReplicationSourceManager while refreshing the peer (#1471)
Signed-off-by: Huaxiang Sun <hu...@apache.com>
Signed-off-by: stack <st...@apache.org>
---
.../hbase/replication/regionserver/ReplicationSourceManager.java | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
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 c6e5092..41c47af 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
@@ -394,11 +394,13 @@ public class ReplicationSourceManager implements ReplicationListener {
// synchronized on oldsources to avoid race with NodeFailoverWorker
synchronized (this.oldsources) {
List<String> previousQueueIds = new ArrayList<>();
- for (ReplicationSourceInterface oldSource : this.oldsources) {
+ for (Iterator<ReplicationSourceInterface> iter = this.oldsources.iterator(); iter
+ .hasNext();) {
+ ReplicationSourceInterface oldSource = iter.next();
if (oldSource.getPeerId().equals(peerId)) {
previousQueueIds.add(oldSource.getQueueId());
oldSource.terminate(terminateMessage);
- this.oldsources.remove(oldSource);
+ iter.remove();
}
}
for (String queueId : previousQueueIds) {