public class ReadChangeStreamPartitionRangeTracker extends TimestampRangeTracker
TimestampRangeTracker. It has a different logic for tryClaim and trySplit methods. It ignores
claims for the same timestamp multiple times. This is because several change stream records might
have the same timestamp, thus leading to multiple claims of the same Timestamp. Other
than that, it always denies splits for the InitialPartition.PARTITION_TOKEN, since we
only need to perform this query once.RestrictionTracker.HasProgress, RestrictionTracker.IsBounded, RestrictionTracker.Progress, RestrictionTracker.TruncateResult<RestrictionT>lastAttemptedPosition, lastClaimedPosition, range, timeSupplier| Constructor and Description |
|---|
ReadChangeStreamPartitionRangeTracker(PartitionMetadata partition,
TimestampRange range)
Receives the partition that will be queried and the timestamp range that belongs to it.
|
| Modifier and Type | Method and Description |
|---|---|
boolean |
tryClaim(com.google.cloud.Timestamp position)
Attempts to claim the given position.
|
@Nullable SplitResult<TimestampRange> |
trySplit(double fractionOfRemainder)
If the partition token is the
InitialPartition.PARTITION_TOKEN, it does not allow for
splits (returns null). |
checkDone, currentRestriction, getProgress, isBounded, setTimeSupplier, tryClaimpublic ReadChangeStreamPartitionRangeTracker(PartitionMetadata partition, TimestampRange range)
partition - the partition that will use the trackerrange - closed / open range interval for the start / end times of the given partitionpublic boolean tryClaim(com.google.cloud.Timestamp position)
Must be equal or larger than the last successfully claimed position.
tryClaim in class TimestampRangeTrackertrue if the position was successfully claimed, false if it is outside
the current TimestampRange of this tracker (in that case this operation is a
no-op).public @Nullable SplitResult<TimestampRange> trySplit(double fractionOfRemainder)
InitialPartition.PARTITION_TOKEN, it does not allow for
splits (returns null).
If a split is successful (non-null), then the restriction is updated to the result of the primary.
trySplit in class TimestampRangeTrackerfractionOfRemainder - A hint as to the fraction of work the primary restriction should
represent based upon the current known remaining amount of work.SplitResult if a split was possible or null if the splitPosition is beyond the end of the range.