in src/main/java/org/apache/sling/discovery/commons/providers/spi/base/SyncTokenService.java [204:266]
private boolean seenAllSyncTokens(BaseTopologyView view) {
logger.trace("seenAllSyncTokens: start");
ResourceResolver resourceResolver = null;
try{
resourceResolver = getResourceResolver();
Resource resource = ResourceHelper.getOrCreateResource(resourceResolver, getSyncTokenPath());
ValueMap syncTokens = resource.adaptTo(ValueMap.class);
String syncToken = view.getLocalClusterSyncTokenId();
boolean success = true;
StringBuffer historyEntry = new StringBuffer();
for (InstanceDescription instance : view.getLocalInstance().getClusterView().getInstances()) {
String instanceSlingId = instance.getSlingId();
Object currentValue = syncTokens.get(instanceSlingId);
if (currentValue == null) {
String msg = "no syncToken yet of "+instance.getSlingId();
logSilencer.infoOrDebug("seenAllSyncToken-" + syncToken + "-no-" + instanceSlingId,
"seenAllSyncTokens: " + msg);
if (historyEntry.length() != 0) {
historyEntry.append(",");
}
historyEntry.append(msg);
success = false;
} else if (!syncToken.equals(currentValue)) {
String msg = "syncToken of " + instance.getSlingId()
+ " is " + currentValue
+ " waiting for " + syncToken;
logSilencer.infoOrDebug("seenAllSyncToken-" + syncToken + "-wait-"+instanceSlingId,
"seenAllSyncTokens: " + msg);
if (historyEntry.length() != 0) {
historyEntry.append(",");
}
historyEntry.append(msg);
success = false;
}
}
if (!success) {
logSilencer.infoOrDebug("seenAllSyncToken-result-" + syncToken,
"seenAllSyncTokens: not yet seen all expected syncTokens (see above for details)");
clusterSyncHistory.addHistoryEntry(view, historyEntry.toString());
return false;
} else {
clusterSyncHistory.addHistoryEntry(view,
"seen all syncTokens");
}
resourceResolver.commit();
logSilencer.infoOrDebug("seenAllSyncToken-result-" + syncToken,
"seenAllSyncTokens: seen all syncTokens!");
return true;
} catch (LoginException e) {
logger.error("seenAllSyncTokens: could not login: "+e, e);
return false;
} catch (PersistenceException e) {
logger.error("seenAllSyncTokens: got PersistenceException: "+e, e);
return false;
} finally {
logger.trace("seenAllSyncTokens: end");
if (resourceResolver!=null) {
resourceResolver.close();
}
}
}