private boolean seenAllSyncTokens()

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();
            }
        }
    }