Details
-
Bug
-
Status: Resolved
-
Critical
-
Resolution: Fixed
-
1.3.1, 1.2.6, 1.1.11, 2.0.0-alpha-1
-
None
Description
ReplicationStateZKBase#getListOfReplicators does not rethrow a KeeperException and returns null in such a case. ReplicationLogCleaner just assumes that there are no replicators and deletes everything.
ReplicationStateZKBase:
public List<String> getListOfReplicators() { List<String> result = null; try { result = ZKUtil.listChildrenNoWatch(this.zookeeper, this.queuesZNode); } catch (KeeperException e) { this.abortable.abort("Failed to get list of replicators", e); } return result; }
ReplicationLogCleaner:
private Set<String> loadWALsFromQueues() throws KeeperException { for (int retry = 0; ; retry++) { int v0 = replicationQueues.getQueuesZNodeCversion(); List<String> rss = replicationQueues.getListOfReplicators(); if (rss == null) { LOG.debug("Didn't find any region server that replicates, won't prevent any deletions."); return ImmutableSet.of(); } ...