Right now, Transaction::conflicts_with returns a boolean. But if we can differentiate between conflicts that can be retried, and those that can't, then we can have the operations themselves retry. This should be enough to make common operations like append, update, upsert, delete, create_index, and compaction always succeed despite concurrency.
Making this differentiation is also a pre-requisite for #3068, as we'll need to do a similar differentiation for things that can be automatically resolved.
Right now,
Transaction::conflicts_withreturns a boolean. But if we can differentiate between conflicts that can be retried, and those that can't, then we can have the operations themselves retry. This should be enough to make common operations like append, update, upsert, delete, create_index, and compaction always succeed despite concurrency.Making this differentiation is also a pre-requisite for #3068, as we'll need to do a similar differentiation for things that can be automatically resolved.
merge_insertwhen possible #3614