Class ElectionStrategy

java.lang.Object
org.tasktide.mutex.strategy.MutexStrategy
org.tasktide.mutex.strategy.ElectionStrategy

public class ElectionStrategy extends MutexStrategy
Splits NFS ElectionStrategy orientated locking into phases:

1). Initialization.
2). Wait for leadership.
3). Examine iteration:
- Current position.
- Queue stagnation.
- Leader time-to-live.
4). Release lock.
  • Constructor Details

  • Method Details

    • apply

      public boolean apply(Mutex mutex)
      Apply Mutex
      Specified by:
      apply in class MutexStrategy
      Parameters:
      mutex -
      Returns:
      boolean
    • cleanUp

      public boolean cleanUp(Mutex mutex)
      Remove election files
      Specified by:
      cleanUp in class MutexStrategy
      Parameters:
      mutex -
      Returns:
      boolean
    • release

      public boolean release(Mutex mutex)
      Release provided Mutex
      Specified by:
      release in class MutexStrategy
      Parameters:
      mutex -
      Returns:
      boolean
    • initMutex

      public void initMutex(Mutex mutex)
      Initialize Mutex
      Parameters:
      mutex -
    • examineQueueStagnation

      public PositionCheckValues examineQueueStagnation(ElectionState state, Mutex mutex, int limit)
      Examines current position in queue has changed.

      1). PositionCheckValues.PROGRESSED = No action
      2). PositionCheckValues.UNCHANGED = Increment streak
      3). PositionCheckValues.LIMIT_REACHED = Recast ballot
      Parameters:
      state -
      mutex -
      limit -
      Returns:
      PositionCheckValues
    • evaluateLeaderTtl

      public boolean evaluateLeaderTtl(Path leader)
      Evaluate provided leader TTL
      Parameters:
      leader -
      Returns:
      boolean
    • evaluateIteration

      public LoopDecision evaluateIteration(ElectionState state, Mutex mutex, int limit)
      Evaluate iteration
      Parameters:
      state -
      mutex -
      limit -
      Returns:
      LoopDecision
    • waitUntilLeader

      public void waitUntilLeader(Mutex mutex)
      Wait until leadership is acquired
      Parameters:
      mutex -