Class OakBacklogClusterSyncService

java.lang.Object
org.apache.sling.discovery.commons.providers.spi.base.AbstractServiceWithBackgroundCheck
org.apache.sling.discovery.commons.providers.spi.base.OakBacklogClusterSyncService
All Implemented Interfaces:
ClusterSyncService

public class OakBacklogClusterSyncService extends AbstractServiceWithBackgroundCheck implements ClusterSyncService
The OakBacklogClusterSyncService will wait until all instances in the local cluster are no longer in any backlog state.
  • Field Details

  • Constructor Details

    • OakBacklogClusterSyncService

      public OakBacklogClusterSyncService()
  • Method Details

    • testConstructorAndActivate

      public static OakBacklogClusterSyncService testConstructorAndActivate(DiscoveryLiteConfig commonsConfig, IdMapService idMapService, SlingSettingsService settingsService, ResourceResolverFactory resourceResolverFactory)
    • testConstructor

      public static OakBacklogClusterSyncService testConstructor(DiscoveryLiteConfig commonsConfig, IdMapService idMapService, SlingSettingsService settingsService, ResourceResolverFactory resourceResolverFactory)
      for testing only!
    • activate

      protected void activate()
    • setConsistencyHistory

      public void setConsistencyHistory(ClusterSyncHistory consistencyHistory)
    • getConsistencyHistory

      public ClusterSyncHistory getConsistencyHistory()
    • getResourceResolver

      protected ResourceResolver getResourceResolver() throws LoginException
      Get or create a ResourceResolver
      Throws:
      LoginException
    • cancelSync

      public void cancelSync()
      Specified by:
      cancelSync in interface ClusterSyncService
    • sync

      public void sync(BaseTopologyView view, Runnable callback)
      Description copied from interface: ClusterSyncService
      Starts the synchronization process and calls the provided callback upon completion.

      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().

      Specified by:
      sync in interface ClusterSyncService
      Parameters:
      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
    • getCommonsConfig

      protected DiscoveryLiteConfig getCommonsConfig()
    • getSettingsService

      protected SlingSettingsService getSettingsService()
    • getSyncHistory

      public List<String> getSyncHistory()