Class ESUIDSequencer

java.lang.Object
org.nuxeo.ecm.core.uidgen.AbstractUIDSequencer
org.nuxeo.elasticsearch.seqgen.ESUIDSequencer
All Implemented Interfaces:
UIDSequencer

public class ESUIDSequencer extends AbstractUIDSequencer
Elasticsearch implementation of UIDSequencer.

Since elasticsearch does not seem to support a notion of native sequence, the implementation uses the auto-increment of the version attribute as described in the ElasticSearch::Sequence - a blazing fast ticket server blog post.

Since:
7.3
  • Field Details

  • Constructor Details

    • ESUIDSequencer

      public ESUIDSequencer()
  • Method Details

    • init

      public void init()
      Description copied from interface: UIDSequencer
      Init Sequencer
    • dispose

      public void dispose()
      Description copied from interface: UIDSequencer
      Cleanup callback
    • initSequence

      public void initSequence(String key, long id)
      Description copied from interface: UIDSequencer
      Initializes the sequencer with the given key to at least the given long id.

      A sequence can only be incremented, so if its current id is greater than the given id the sequence won't be decremented to reach the given id.

      Specified by:
      initSequence in interface UIDSequencer
      Overrides:
      initSequence in class AbstractUIDSequencer
    • getKeys

      public List<String> getKeys()
      Returns:
      all keys known to this sequencer
    • getCurrent

      public long getCurrent(String sequenceName)
      Returns:
      the current sequence value for the given key, or UIDSequencer.SEQUENCE_DOES_NOT_EXIST if the sequence doesn't exist
    • getNextLong

      public long getNextLong(String sequenceName)
      Description copied from interface: UIDSequencer
      For the given key returns the incremented UID which is also stored in the same sequence entry. This is a "one time use" function for a document.
    • getNextBlock

      public List<Long> getNextBlock(String key, int blockSize)
      Description copied from interface: UIDSequencer
      Returns a block containing blockSize sequences.
    • getNextBlockWithRetry

      protected long getNextBlockWithRetry(String key, int blockSize)
    • validateKey

      protected static void validateKey(String key)