belliottsmith commented on code in PR #226: URL: https://github.com/apache/cassandra-accord/pull/226#discussion_r2222716724
########## accord-core/src/main/java/accord/impl/AbstractReplayer.java: ########## @@ -23,21 +23,46 @@ import accord.local.CommandStore; import accord.local.Commands; import accord.local.PreLoadContext; +import accord.local.RedundantBefore; import accord.local.SafeCommand; import accord.local.SafeCommandStore; +import accord.local.StoreParticipants; import accord.primitives.Participants; import accord.primitives.SaveStatus; import accord.primitives.TxnId; import accord.utils.Invariants; +import static accord.local.RedundantStatus.Property.LOCALLY_DURABLE_TO_COMMAND_STORE; +import static accord.local.RedundantStatus.Property.LOCALLY_DURABLE_TO_DATA_STORE; import static accord.primitives.SaveStatus.Applying; import static accord.primitives.SaveStatus.PreApplied; import static accord.primitives.SaveStatus.TruncatedApplyWithOutcome; import static accord.primitives.Status.Applied; import static accord.primitives.Txn.Kind.Write; -public abstract class AbstractLoader implements Journal.Loader +public abstract class AbstractReplayer implements Journal.Replayer { + final RedundantBefore redundantBefore; + final TxnId minReplay; + + protected AbstractReplayer(RedundantBefore redundantBefore) + { + this.redundantBefore = redundantBefore; + this.minReplay = TxnId.noneIfNull(redundantBefore.foldl((b, v) -> TxnId.nonNullOrMin(v, TxnId.min(b.maxBound(LOCALLY_DURABLE_TO_DATA_STORE), b.maxBound(LOCALLY_DURABLE_TO_COMMAND_STORE))), null, ignore -> false)); + } + + protected boolean maybeShouldReplay(TxnId txnId) + { + return txnId.compareTo(minReplay) >= 0; + } + + protected boolean shouldReplay(TxnId txnId, StoreParticipants participants) + { + Participants<?> search = participants.route(); + if (search == null) search = participants.hasTouched(); Review Comment: `hasTouched` can never be null, and in fact is forbidden from being empty (except for `Uninitialised/Erased/Vestigial`) -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: pr-unsubscr...@cassandra.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: pr-unsubscr...@cassandra.apache.org For additional commands, e-mail: pr-h...@cassandra.apache.org