public interface ClusterSyncService
The issue is described in length in SLING-4627 - the short version is composed of two different factors:
void sync(BaseTopologyView view, Runnable callback)
sync() is not thread-safe and should not be invoked concurrently.
If sync() gets called before a previous invocation finished, that previous invocation will be discarded, ie the callback of the previous invocation will no longer be called.
The synchronization process consists of making sure that the repository has processed any potential backlog of instances that are no longer part of the provided, new view. Plus it writes a 'sync-token' to a well-defined location, with all peers doing the same, and upon seeing all other sync-tokens declares successful completion - at which point it calls the callback.run().
view- the view which all instances in the local cluster should agree on having seen
callback- the runnable which should be called after successful syncing
Copyright © 2017 The Apache Software Foundation. All rights reserved.