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 3789c5b Fix SerializerSupport.reconstruct, and introduce RangeFactory 3789c5b is described below commit 3789c5bfec50eb96157c0a55af77f78ee0cac804 Author: Benedict Elliott Smith <bened...@apache.org> AuthorDate: Wed Jan 24 16:16:05 2024 +0000 Fix SerializerSupport.reconstruct, and introduce RangeFactory --- accord-core/src/main/java/accord/api/RoutingKey.java | 2 ++ accord-core/src/main/java/accord/local/SerializerSupport.java | 1 + accord-core/src/main/java/accord/messages/CheckStatus.java | 4 ++-- accord-core/src/main/java/accord/primitives/LatestDeps.java | 4 ++-- accord-core/src/main/java/accord/primitives/Range.java | 2 +- .../{api/RoutingKey.java => primitives/RangeFactory.java} | 11 ++++------- accord-core/src/test/java/accord/impl/IntHashKey.java | 7 +++++++ accord-core/src/test/java/accord/impl/IntKey.java | 7 +++++++ accord-core/src/test/java/accord/impl/PrefixedIntHashKey.java | 7 +++++++ .../src/main/java/accord/maelstrom/MaelstromKey.java | 7 +++++++ 10 files changed, 40 insertions(+), 12 deletions(-) diff --git a/accord-core/src/main/java/accord/api/RoutingKey.java b/accord-core/src/main/java/accord/api/RoutingKey.java index 4ae6506..b219036 100644 --- a/accord-core/src/main/java/accord/api/RoutingKey.java +++ b/accord-core/src/main/java/accord/api/RoutingKey.java @@ -19,6 +19,7 @@ package accord.api; import accord.primitives.Range; +import accord.primitives.RangeFactory; import accord.primitives.RoutableKey; import accord.primitives.Unseekable; @@ -26,4 +27,5 @@ public interface RoutingKey extends Unseekable, RoutableKey { @Override default RoutingKey toUnseekable() { return this; } Range asRange(); + RangeFactory rangeFactory(); } diff --git a/accord-core/src/main/java/accord/local/SerializerSupport.java b/accord-core/src/main/java/accord/local/SerializerSupport.java index fb8f121..cefe63c 100644 --- a/accord-core/src/main/java/accord/local/SerializerSupport.java +++ b/accord-core/src/main/java/accord/local/SerializerSupport.java @@ -73,6 +73,7 @@ public class SerializerSupport case PreCommitted: return accepted(attrs, status, executeAt, promised, accepted, messageProvider); case Committed: + case Stable: case ReadyToExecute: return committed(attrs, status, executeAt, promised, accepted, waitingOnProvider, messageProvider); case PreApplied: diff --git a/accord-core/src/main/java/accord/messages/CheckStatus.java b/accord-core/src/main/java/accord/messages/CheckStatus.java index a98e5ff..f888f48 100644 --- a/accord-core/src/main/java/accord/messages/CheckStatus.java +++ b/accord-core/src/main/java/accord/messages/CheckStatus.java @@ -437,7 +437,7 @@ public class CheckStatus extends AbstractEpochRequest<CheckStatus.CheckStatusRep public Ranges matchingRanges(Predicate<FoundKnown> match) { - return foldlWithBounds((known, ranges, start, end) -> match.test(known) ? ranges.with(Ranges.of(start.asRange().newRange(start, end))) : ranges, Ranges.EMPTY, i -> false); + return foldlWithBounds((known, ranges, start, end) -> match.test(known) ? ranges.with(Ranges.of(start.rangeFactory().newRange(start, end))) : ranges, Ranges.EMPTY, i -> false); } private static FoundKnown reduceInferredOrKnownForWithQuorum(FoundKnown foundKnown, @Nullable FoundKnown prev) @@ -474,7 +474,7 @@ public class CheckStatus extends AbstractEpochRequest<CheckStatus.CheckStatusRep if (!required.isSatisfiedBy(known)) return prev; - return prev.with(Ranges.of(start.asRange().newRange(start, end))); + return prev.with(Ranges.of(start.rangeFactory().newRange(start, end))); }, Ranges.EMPTY, i -> false); } diff --git a/accord-core/src/main/java/accord/primitives/LatestDeps.java b/accord-core/src/main/java/accord/primitives/LatestDeps.java index 98020ad..c2a03e3 100644 --- a/accord-core/src/main/java/accord/primitives/LatestDeps.java +++ b/accord-core/src/main/java/accord/primitives/LatestDeps.java @@ -134,7 +134,7 @@ public class LatestDeps extends ReducingRangeMap<LatestDeps.LatestEntry> if (!slice) slice = rangeDeps.indexOfStart(start) != -1 || rangeDeps.indexOfStart(end) != -1 - rangeDeps.rangeCount(); if (!slice) return deps; - Ranges ranges = Ranges.of(start.asRange().newRange(start, end)); + Ranges ranges = Ranges.of(start.rangeFactory().newRange(start, end)); return new Deps(keyDeps.slice(ranges), rangeDeps.slice(ranges)); } @@ -327,7 +327,7 @@ public class LatestDeps extends ReducingRangeMap<LatestDeps.LatestEntry> private <V> Stream<V> stream(TriFunction<Ranges, MergeEntry, BiFunction<Deps, Ranges, V>, Stream<V>> selector, BiFunction<Deps, Ranges, V> getter) { - Range rangeFactory = starts[0].asRange(); + RangeFactory rangeFactory = starts[0].rangeFactory(); return IntStream.range(0, size()) .filter(i -> values[i] != null) .mapToObj(i -> selector.apply(Ranges.of(rangeFactory.newRange(starts[i], starts[i+1])), values[i], getter)) diff --git a/accord-core/src/main/java/accord/primitives/Range.java b/accord-core/src/main/java/accord/primitives/Range.java index a656c9b..f652186 100644 --- a/accord-core/src/main/java/accord/primitives/Range.java +++ b/accord-core/src/main/java/accord/primitives/Range.java @@ -35,7 +35,7 @@ import static accord.utils.SortedArrays.Search.FAST; /** * A range of keys */ -public abstract class Range implements Comparable<RoutableKey>, Unseekable, Seekable +public abstract class Range implements Comparable<RoutableKey>, Unseekable, Seekable, RangeFactory { public static class EndInclusive extends Range { diff --git a/accord-core/src/main/java/accord/api/RoutingKey.java b/accord-core/src/main/java/accord/primitives/RangeFactory.java similarity index 74% copy from accord-core/src/main/java/accord/api/RoutingKey.java copy to accord-core/src/main/java/accord/primitives/RangeFactory.java index 4ae6506..6eb4dbb 100644 --- a/accord-core/src/main/java/accord/api/RoutingKey.java +++ b/accord-core/src/main/java/accord/primitives/RangeFactory.java @@ -16,14 +16,11 @@ * limitations under the License. */ -package accord.api; +package accord.primitives; -import accord.primitives.Range; -import accord.primitives.RoutableKey; -import accord.primitives.Unseekable; +import accord.api.RoutingKey; -public interface RoutingKey extends Unseekable, RoutableKey +public interface RangeFactory { - @Override default RoutingKey toUnseekable() { return this; } - Range asRange(); + Range newRange(RoutingKey start, RoutingKey end); } diff --git a/accord-core/src/test/java/accord/impl/IntHashKey.java b/accord-core/src/test/java/accord/impl/IntHashKey.java index df90d2b..1d0ffd3 100644 --- a/accord-core/src/test/java/accord/impl/IntHashKey.java +++ b/accord-core/src/test/java/accord/impl/IntHashKey.java @@ -25,6 +25,7 @@ import java.util.zip.CRC32; import accord.api.RoutingKey; import accord.local.ShardDistributor; +import accord.primitives.RangeFactory; import accord.primitives.RoutableKey; import accord.primitives.Ranges; import accord.primitives.Keys; @@ -128,6 +129,12 @@ public abstract class IntHashKey implements RoutableKey { return new Range(new Hash(hash - 1), new Hash(hash)); } + + @Override + public RangeFactory rangeFactory() + { + return (s, e) -> new Range((Hash) s, (Hash) e); + } } public static class Range extends accord.primitives.Range.EndInclusive diff --git a/accord-core/src/test/java/accord/impl/IntKey.java b/accord-core/src/test/java/accord/impl/IntKey.java index 2fa8df6..ae57550 100644 --- a/accord-core/src/test/java/accord/impl/IntKey.java +++ b/accord-core/src/test/java/accord/impl/IntKey.java @@ -24,6 +24,7 @@ import java.util.Objects; import accord.api.RoutingKey; import accord.local.ShardDistributor; +import accord.primitives.RangeFactory; import accord.primitives.RoutableKey; import accord.primitives.Keys; import accord.primitives.RoutingKeys; @@ -128,6 +129,12 @@ public class IntKey implements RoutableKey { return new Range(new Routing(key - 1), new Routing(key)); } + + @Override + public RangeFactory rangeFactory() + { + return (s, e) -> new Range((Routing)s, (Routing)e); + } } public static class Range extends accord.primitives.Range.EndInclusive diff --git a/accord-core/src/test/java/accord/impl/PrefixedIntHashKey.java b/accord-core/src/test/java/accord/impl/PrefixedIntHashKey.java index a8dab2b..2ee13d4 100644 --- a/accord-core/src/test/java/accord/impl/PrefixedIntHashKey.java +++ b/accord-core/src/test/java/accord/impl/PrefixedIntHashKey.java @@ -25,6 +25,7 @@ import javax.annotation.Nonnull; import accord.api.RoutingKey; import accord.local.ShardDistributor; +import accord.primitives.RangeFactory; import accord.primitives.Ranges; import accord.primitives.RoutableKey; import accord.utils.CRCUtils; @@ -127,6 +128,12 @@ public class PrefixedIntHashKey implements RoutableKey { super(prefix, key, isHash); } + + @Override + public RangeFactory rangeFactory() + { + return (s, e) -> new Range((PrefixedIntRoutingKey) s, (PrefixedIntRoutingKey) e); + } } public static final class Sentinel extends PrefixedIntRoutingKey diff --git a/accord-maelstrom/src/main/java/accord/maelstrom/MaelstromKey.java b/accord-maelstrom/src/main/java/accord/maelstrom/MaelstromKey.java index 70246a3..3514afa 100644 --- a/accord-maelstrom/src/main/java/accord/maelstrom/MaelstromKey.java +++ b/accord-maelstrom/src/main/java/accord/maelstrom/MaelstromKey.java @@ -24,6 +24,7 @@ import java.util.Objects; import accord.api.RoutingKey; import accord.local.ShardDistributor; +import accord.primitives.RangeFactory; import accord.primitives.RoutableKey; import accord.utils.Invariants; import com.google.gson.TypeAdapter; @@ -149,6 +150,12 @@ public class MaelstromKey implements RoutableKey return new Range(new Routing(datum.hashCode() - 1), new Routing(datum.hashCode())); } + + @Override + public RangeFactory rangeFactory() + { + return Range::new; + } } public static class Range extends accord.primitives.Range.EndInclusive --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org