Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
2.2.2
-
None
-
Reviewed
Description
When replication refresh to new state, it will create a new source and terminate the old source and replace the old source with new source.
public void refreshSources(String peerId) throws IOException { String terminateMessage = "Peer " + peerId + " state or config changed. Will close the previous replication source and open a new one"; ReplicationPeer peer = replicationPeers.getPeer(peerId); ReplicationSourceInterface src = createSource(peerId, peer); // synchronized on latestPaths to avoid missing the new log synchronized (this.latestPaths) { ReplicationSourceInterface toRemove = this.sources.put(peerId, src); if (toRemove != null) { LOG.info("Terminate replication source for " + toRemove.getPeerId()); toRemove.terminate(terminateMessage); } for (NavigableSet<String> walsByGroup : walsById.get(peerId).values()) { walsByGroup.forEach(wal -> src.enqueueLog(new Path(this.logDir, wal))); } } LOG.info("Startup replication source for " + src.getPeerId()); src.startup();
terminate replication source will remove all metrics, current terminate replication source be called after create new source which do init metrics, so the result is there is no corresponding metrics after refresh replication source.
Attachments
Issue Links
- is a parent of
-
HBASE-24781 Clean up peer metrics when disabling peer
- Resolved
- is related to
-
HBASE-27463 Reset sizeOfLogQueue when refresh replication source
- Resolved
- links to