in twill-zookeeper/src/main/java/org/apache/twill/internal/zookeeper/LeaderElection.java [324:353]
private Optional<String> findNodeToWatch(List<String> nodes) {
// If this node path is not know, find it first.
if (zkNodePath == null) {
for (String node : nodes) {
if (node.startsWith(guid)) {
zkNodePath = zkFolderPath + "/" + node;
break;
}
}
}
if (zkNodePath == null) {
// Cannot find the node path, return null
return null;
}
// Find the maximum node that the smaller than node created by this client.
int currentId = Integer.parseInt(zkNodePath.substring(zkNodePath.indexOf(guid) + guid.length() + 1));
String nodeToWatch = null;
int maxOfMins = Integer.MIN_VALUE;
for (String node : nodes) {
int nodeId = Integer.parseInt(node.substring(guid.length() + 1));
if (nodeId < currentId && nodeId > maxOfMins) {
maxOfMins = nodeId;
nodeToWatch = node;
}
}
return nodeToWatch == null ? Optional.<String>absent() : Optional.of(nodeToWatch);
}