This is an automated email from the ASF dual-hosted git repository. benedict pushed a commit to branch trunk in repository https://gitbox.apache.org/repos/asf/cassandra-accord.git
The following commit(s) were added to refs/heads/trunk by this push: new 6a9482be restore lost commit 6a9482be is described below commit 6a9482beac98b0421176937b6557565f4f8ca1be Author: Benedict Elliott Smith <bened...@apache.org> AuthorDate: Thu Oct 3 11:51:47 2024 +0100 restore lost commit --- .../src/main/java/accord/impl/TimestampsForKeys.java | 1 - accord-core/src/main/java/accord/local/Cleanup.java | 13 +++++++++++-- accord-core/src/main/java/accord/local/CommandStore.java | 11 ----------- .../src/main/java/accord/local/SafeCommandStore.java | 7 ++++--- accord-core/src/main/java/accord/primitives/Timestamp.java | 10 ---------- accord-core/src/main/java/accord/primitives/Txn.java | 2 +- 6 files changed, 16 insertions(+), 28 deletions(-) diff --git a/accord-core/src/main/java/accord/impl/TimestampsForKeys.java b/accord-core/src/main/java/accord/impl/TimestampsForKeys.java index baea052c..987400b0 100644 --- a/accord-core/src/main/java/accord/impl/TimestampsForKeys.java +++ b/accord-core/src/main/java/accord/impl/TimestampsForKeys.java @@ -20,7 +20,6 @@ package accord.impl; import accord.api.RoutingKey; import accord.api.VisibleForImplementation; -import accord.local.CommandStore; import accord.local.SafeCommandStore; import accord.primitives.RoutingKeys; import accord.primitives.Timestamp; diff --git a/accord-core/src/main/java/accord/local/Cleanup.java b/accord-core/src/main/java/accord/local/Cleanup.java index b07c8a09..0c0cecf7 100644 --- a/accord-core/src/main/java/accord/local/Cleanup.java +++ b/accord-core/src/main/java/accord/local/Cleanup.java @@ -52,16 +52,20 @@ import static accord.utils.Invariants.illegalState; public enum Cleanup { NO(Uninitialised), + // we don't know if the command has been applied or invalidated as we have incomplete information + // so erase what information we don't need in future to decide this + // TODO (required): tighten up semantics here (and maybe infer more aggressively) + EXPUNGE_PARTIAL(TruncatedApplyWithOutcome), TRUNCATE_WITH_OUTCOME(TruncatedApplyWithOutcome), TRUNCATE(TruncatedApply), INVALIDATE(Invalidated), VESTIGIAL(ErasedOrVestigial), ERASE(Erased), - // erase all fields except any participants and committed executeAt - EXPUNGE_PARTIAL(Erased), // we can stop storing the record entirely EXPUNGE(Erased); + private static final Cleanup[] VALUES = values(); + public final SaveStatus appliesIfNot; Cleanup(SaveStatus appliesIfNot) @@ -239,4 +243,9 @@ public enum Cleanup // then we can safely erase. Revisit as part of rationalising RedundantBefore registers. return redundantBefore.shardStatus(txnId) == SHARD_REDUNDANT; } + + public static Cleanup forOrdinal(int ordinal) + { + return VALUES[ordinal]; + } } diff --git a/accord-core/src/main/java/accord/local/CommandStore.java b/accord-core/src/main/java/accord/local/CommandStore.java index d8a4583e..cc6abde3 100644 --- a/accord-core/src/main/java/accord/local/CommandStore.java +++ b/accord-core/src/main/java/accord/local/CommandStore.java @@ -242,22 +242,11 @@ public abstract class CommandStore implements AgentExecutor protected abstract void registerHistoricalTransactions(Deps deps, SafeCommandStore safeStore); - protected void upsertDurableBefore(DurableBefore addDurableBefore) - { - durableBefore = DurableBefore.merge(durableBefore, addDurableBefore); - } - protected void unsafeSetRejectBefore(RejectBefore newRejectBefore) { this.rejectBefore = newRejectBefore; } - // Should be called _only_ via safe command store - protected void upsertRedundantBefore(RedundantBefore addRedundantBefore) - { - redundantBefore = RedundantBefore.merge(redundantBefore, addRedundantBefore); - } - protected void unsafeSetDurableBefore(DurableBefore newDurableBefore) { durableBefore = newDurableBefore; diff --git a/accord-core/src/main/java/accord/local/SafeCommandStore.java b/accord-core/src/main/java/accord/local/SafeCommandStore.java index bb2bf7e8..2788f4bb 100644 --- a/accord-core/src/main/java/accord/local/SafeCommandStore.java +++ b/accord-core/src/main/java/accord/local/SafeCommandStore.java @@ -239,12 +239,13 @@ public abstract class SafeCommandStore public void upsertRedundantBefore(RedundantBefore addRedundantBefore) { - commandStore().upsertRedundantBefore(addRedundantBefore); + RedundantBefore newRedundantBefore = RedundantBefore.merge(redundantBefore(), addRedundantBefore); + unsafeSetRedundantBefore(newRedundantBefore); } - public void upsertDurableBefore(DurableBefore addDurableBefore) + protected void unsafeSetRedundantBefore(RedundantBefore newRedundantBefore) { - commandStore().upsertDurableBefore(addDurableBefore); + commandStore().unsafeSetRedundantBefore(newRedundantBefore); } public void setBootstrapBeganAt(NavigableMap<TxnId, Ranges> newBootstrapBeganAt) diff --git a/accord-core/src/main/java/accord/primitives/Timestamp.java b/accord-core/src/main/java/accord/primitives/Timestamp.java index 4211771b..da8cb733 100644 --- a/accord-core/src/main/java/accord/primitives/Timestamp.java +++ b/accord-core/src/main/java/accord/primitives/Timestamp.java @@ -157,16 +157,6 @@ public class Timestamp implements Comparable<Timestamp>, EpochSupplier return minEpoch <= epoch() ? this : new Timestamp(minEpoch, hlc(), flags(), node); } - public Timestamp withHlcAtLeast(long minHlc) - { - return minHlc <= hlc() ? this : new Timestamp(epoch(), minHlc, flags(), node); - } - - public Timestamp withHlcAtLeastAndNoFlags(long minHlc) - { - return minHlc <= hlc() ? this : new Timestamp(epoch(), minHlc, 0, node); - } - public Timestamp withEpoch(long epoch) { return epoch == epoch() ? this : new Timestamp(epoch, hlc(), flags(), node); diff --git a/accord-core/src/main/java/accord/primitives/Txn.java b/accord-core/src/main/java/accord/primitives/Txn.java index 55ede129..99e18979 100644 --- a/accord-core/src/main/java/accord/primitives/Txn.java +++ b/accord-core/src/main/java/accord/primitives/Txn.java @@ -447,7 +447,7 @@ public interface Txn default AsyncChain<Data> read(SafeCommandStore safeStore, Timestamp executeAt, Ranges unavailable) { Ranges ranges = safeStore.ranges().allAt(executeAt).without(unavailable); - List<AsyncChain<Data>> chains = Routables.foldlMinimal(keys(), ranges, (key, accumulate, index) -> { + List<AsyncChain<Data>> chains = Routables.foldlMinimal(read().keys(), ranges, (key, accumulate, index) -> { AsyncChain<Data> result = read().read(key, safeStore, executeAt, safeStore.dataStore()); accumulate.add(result); return accumulate; --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org