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)