You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hbase.apache.org by "Jingyun Tian (JIRA)" <ji...@apache.org> on 2018/07/06 12:20:00 UTC

[jira] [Created] (HBASE-20855) PeerConfigTracker only support one listener will cause problem when there is a recovered replication queue

Jingyun Tian created HBASE-20855:
------------------------------------

             Summary: PeerConfigTracker only support one listener will cause problem when there is a recovered replication queue
                 Key: HBASE-20855
                 URL: https://issues.apache.org/jira/browse/HBASE-20855
             Project: HBase
          Issue Type: Bug
    Affects Versions: 1.4.0, 1.3.0, 1.5.0
            Reporter: Jingyun Tian
            Assignee: Jingyun Tian


{code}

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");
 }
 }
}

{code}

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.

{code}

public synchronized void setListener(ReplicationPeerConfigListener listener){
 this.listener = listener;
}

{code}

 

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.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)