Package org.elasticsearch.index.seqno
Class LocalCheckpointTracker
- java.lang.Object
-
- org.elasticsearch.index.seqno.LocalCheckpointTracker
-
public class LocalCheckpointTracker extends java.lang.Object
This class generates sequences numbers and keeps track of the so-called "local checkpoint" which is the highest number for which all previous sequence numbers have been processed (inclusive).
-
-
Constructor Summary
Constructors Constructor Description LocalCheckpointTracker(long maxSeqNo, long localCheckpoint)
Initialize the local checkpoint service.
-
Method Summary
Modifier and Type Method Description void
advanceMaxSeqNo(long seqNo)
Marks the provided sequence number as seen and updates the max_seq_no if needed.boolean
contains(long seqNo)
Checks if the given sequence number was marked as completed in this tracker.long
generateSeqNo()
Issue the next sequence number.long
getCheckpoint()
The current checkpoint which can be advanced bymarkSeqNoAsCompleted(long)
.long
getMaxSeqNo()
The maximum sequence number issued so far.SeqNoStats
getStats(long globalCheckpoint)
constructs aSeqNoStats
object, using local state and the supplied global checkpoint This is needed to make sure the local checkpoint and max seq no are consistentvoid
markSeqNoAsCompleted(long seqNo)
Marks the processing of the provided sequence number as completed as updates the checkpoint if possible.void
waitForOpsToComplete(long seqNo)
Waits for all operations up to the provided sequence number to complete.
-
-
-
Constructor Detail
-
LocalCheckpointTracker
public LocalCheckpointTracker(long maxSeqNo, long localCheckpoint)
Initialize the local checkpoint service. ThemaxSeqNo
should be set to the last sequence number assigned, orSequenceNumbers.NO_OPS_PERFORMED
andlocalCheckpoint
should be set to the last known local checkpoint, orSequenceNumbers.NO_OPS_PERFORMED
.- Parameters:
maxSeqNo
- the last sequence number assigned, orSequenceNumbers.NO_OPS_PERFORMED
localCheckpoint
- the last known local checkpoint, orSequenceNumbers.NO_OPS_PERFORMED
-
-
Method Detail
-
generateSeqNo
public long generateSeqNo()
Issue the next sequence number.- Returns:
- the next assigned sequence number
-
advanceMaxSeqNo
public void advanceMaxSeqNo(long seqNo)
Marks the provided sequence number as seen and updates the max_seq_no if needed.
-
markSeqNoAsCompleted
public void markSeqNoAsCompleted(long seqNo)
Marks the processing of the provided sequence number as completed as updates the checkpoint if possible.- Parameters:
seqNo
- the sequence number to mark as completed
-
getCheckpoint
public long getCheckpoint()
The current checkpoint which can be advanced bymarkSeqNoAsCompleted(long)
.- Returns:
- the current checkpoint
-
getMaxSeqNo
public long getMaxSeqNo()
The maximum sequence number issued so far.- Returns:
- the maximum sequence number
-
getStats
public SeqNoStats getStats(long globalCheckpoint)
constructs aSeqNoStats
object, using local state and the supplied global checkpoint This is needed to make sure the local checkpoint and max seq no are consistent
-
waitForOpsToComplete
public void waitForOpsToComplete(long seqNo) throws java.lang.InterruptedException
Waits for all operations up to the provided sequence number to complete.- Parameters:
seqNo
- the sequence number that the checkpoint must advance to before this method returns- Throws:
java.lang.InterruptedException
- if the thread was interrupted while blocking on the condition
-
contains
public boolean contains(long seqNo)
Checks if the given sequence number was marked as completed in this tracker.
-
-