Class AbstractClusterSafetyManager

java.lang.Object
com.atlassian.confluence.cluster.safety.AbstractClusterSafetyManager
All Implemented Interfaces:
ClusterSafetyManager
Direct Known Subclasses:
DefaultClusterSafetyManager, HazelcastClusterSafetyManager

public abstract class AbstractClusterSafetyManager extends Object implements ClusterSafetyManager
Contains common functionality for clustered and standalone safety managers
See Also:
  • Field Details

  • Constructor Details

    • AbstractClusterSafetyManager

      protected AbstractClusterSafetyManager(ClusterSafetyDao clusterSafetyDao, com.atlassian.event.api.EventPublisher eventPublisher, ClusterManager clusterManager, LicenseService licenseService)
  • Method Details

    • verify

      public void verify(long runInterval)
      Description copied from interface: ClusterSafetyManager
      Ensures cluster is safe. If not, panic procedure is initiated.
      Specified by:
      verify in interface ClusterSafetyManager
    • onDatabaseNumberIsMissed

      protected void onDatabaseNumberIsMissed(@NonNull String lastCacheModifier, @NonNull Integer cacheSafetyNumber, int nextValue) throws ClusterPanicException
      Method is called when safety number is missed in database. By default it updates safety number in the cache and database.
      Parameters:
      lastCacheModifier - last cache modifier
      cacheSafetyNumber - safety number in cache
      nextValue - next safety number to put into the cache and database
      Throws:
      ClusterPanicException - in a case if panic should be triggered
    • onCacheNumberIsMissed

      protected void onCacheNumberIsMissed(@NonNull Integer dbSafetyNumber, int nextValue) throws ClusterPanicException
      Method is called when safety number is missed in cache. By default it updates safety number in the cache and database.
      Parameters:
      dbSafetyNumber - safety number in database
      nextValue - next safety number to put into the cache and database
      Throws:
      ClusterPanicException - in a case if panic should be triggered
    • onNumbersAreEqual

      protected void onNumbersAreEqual(@NonNull String lastCacheModifier, @NonNull Integer dbSafetyNumber, @NonNull Integer cacheSafetyNumber, int nextValue) throws ClusterPanicException
      Method is called when safety numbers in cache and database are equal. By default it updates safety number in the cache and database.
      Parameters:
      lastCacheModifier - last cache modifier
      dbSafetyNumber - safety number in database
      cacheSafetyNumber - safety number in cache
      nextValue - next safety number to put into the cache and database
      Throws:
      ClusterPanicException - in a case if panic should be triggered
    • onNumbersAreDifferent

      protected void onNumbersAreDifferent(@NonNull String lastCacheModifier, @NonNull Integer dbSafetyNumber, @NonNull Integer cacheSafetyNumber, int nextValue) throws ClusterPanicException
      Method is called when safety numbers in cache and database are not equal. By default this method throws ClusterPanicException to trigger cluster panic.
      Parameters:
      lastCacheModifier - last cache modifier
      dbSafetyNumber - safety number in database
      cacheSafetyNumber - safety number in cache
      nextValue - next safety number to put into the cache and database
      Throws:
      ClusterPanicException - in a case if panic should be triggered
    • onNumbersMissed

      protected void onNumbersMissed(int nextValue)
      Method is called when safety numbers in cache and database are missed. By default it updates safety number in the cache and database.
      Parameters:
      nextValue - next safety number to put into the cache and database
      Throws:
      ClusterPanicException - in a case if panic should be triggered
    • updateSafetyNumber

      protected void updateSafetyNumber(int nextValue)
      Updates safety number in cache and database
      Parameters:
      nextValue - safety number to be updated in cache and db
    • getNodeName

      protected @NonNull String getNodeName()
    • isLogEnabled

      public boolean isLogEnabled()
    • getNextValue

      protected int getNextValue()
    • getLogger

      protected abstract org.slf4j.Logger getLogger()
    • logRuntimeInfo

      protected abstract void logRuntimeInfo()
    • getSafetyNumberModifierMap

      protected abstract Map<String,String> getSafetyNumberModifierMap()
    • getSafetyNumberMap

      protected abstract Map<String,Integer> getSafetyNumberMap()
    • handlePanic

      protected abstract void handlePanic()
    • getEventPublisher

      public com.atlassian.event.api.EventPublisher getEventPublisher()
    • getLicenseService

      public LicenseService getLicenseService()