Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
1.4.0, 1.5.0
-
None
-
None
-
Reviewed
Description
public void init(Context context) throws IOException { this.ctx = context; if (this.ctx != null){ ReplicationPeer peer = this.ctx.getReplicationPeer(); if (peer != null){ peer.trackPeerConfigChanges(this); } else { LOG.warn("Not tracking replication peer config changes for Peer Id " + this.ctx.getPeerId() + " because there's no such peer"); } } }
As we know, replication source will set itself to the PeerConfigTracker in ReplicationPeer. When there is one or more recovered queue, each queue will generate a new replication source, But they share the same ReplicationPeer.
Then when it calls setListener, the new generated one will cover the older one. Thus there will only has one ReplicationPeer that receive the peer config change notify.
public synchronized void setListener(ReplicationPeerConfigListener listener){ this.listener = listener; }
To solve this, PeerConfigTracker need to support multiple listener and listener should be removed when the replication endpoint terminated.
I will upload a patch later with fix and UT.
Attachments
Attachments
Issue Links
- requires
-
HBASE-20905 branch-1 docker build fails
- Resolved
- links to