This should result in operations committing early rather than hitting transaction_too_old exceptions.
This also refactors the way that configuration is specified for the online indexer and online index scrubber so that they share a base-builder implementation. That base builder contains the de-duplicated code. In theory, we could have done this by updating the OnlineIndexScrubber.Builder with two new methods setting the time limits, but this seemed like a good change to make to avoid having as much config drift in the future.
The main substantive change here is that the
OnlineIndexScrubber.Builder
now allows the user to set a time limit and a transaction time limit. This is then honored by logic inIndexinbBase
: https://github.com/FoundationDB/fdb-record-layer/blob/695c4053527faf59bcb604abd3fd7bf57fddb11f/fdb-record-layer-core/src/main/java/com/apple/foundationdb/record/provider/foundationdb/IndexingBase.java#L935-L944This should result in operations committing early rather than hitting
transaction_too_old
exceptions.This also refactors the way that configuration is specified for the online indexer and online index scrubber so that they share a base-builder implementation. That base builder contains the de-duplicated code. In theory, we could have done this by updating the
OnlineIndexScrubber.Builder
with two new methods setting the time limits, but this seemed like a good change to make to avoid having as much config drift in the future.This resolves #2787.