This is an automated email from the ASF dual-hosted git repository. aleksey pushed a commit to branch cep-15-accord in repository https://gitbox.apache.org/repos/asf/cassandra.git
The following commit(s) were added to refs/heads/cep-15-accord by this push: new 7abbb337de Switch Node.Id from long to int 7abbb337de is described below commit 7abbb337dea6de3c28dca55f081fd476b8b7ef7c Author: Aleksey Yeschenko <alek...@apache.org> AuthorDate: Thu Feb 2 16:37:39 2023 +0000 Switch Node.Id from long to int patch by Aleksey Yeschenko; reviewed by Benedict Elliott Smith for CASSANDRA-18135 --- .build/include-accord.sh | 2 +- .../cassandra/service/accord/AccordKeyspace.java | 6 +++--- .../cassandra/service/accord/EndpointMapping.java | 24 ++++------------------ .../accord/serializers/TopologySerializers.java | 10 ++++----- .../cassandra/service/accord/AccordTestUtils.java | 6 +++--- .../service/accord/EndpointMappingTest.java | 2 +- .../serializers/TopologySerializersTest.java | 2 +- 7 files changed, 18 insertions(+), 34 deletions(-) diff --git a/.build/include-accord.sh b/.build/include-accord.sh index 5609ea0585..34ee959221 100755 --- a/.build/include-accord.sh +++ b/.build/include-accord.sh @@ -25,7 +25,7 @@ set -o nounset bin="$(cd "$(dirname "$0")" > /dev/null; pwd)" accord_repo='https://github.com/apache/cassandra-accord.git' -accord_sha='0cc9e273b2eaa37d82a1ae1ac2681aec65aa0f6d' +accord_sha='da77b744e4fdb5f39656e4269f4f1806e485c9c0' accord_src="$bin/cassandra-accord" _main() { diff --git a/src/java/org/apache/cassandra/service/accord/AccordKeyspace.java b/src/java/org/apache/cassandra/service/accord/AccordKeyspace.java index 9148bb4311..6cd1d6dddf 100644 --- a/src/java/org/apache/cassandra/service/accord/AccordKeyspace.java +++ b/src/java/org/apache/cassandra/service/accord/AccordKeyspace.java @@ -122,8 +122,8 @@ public class AccordKeyspace public static final String COMMANDS = "commands"; public static final String COMMANDS_FOR_KEY = "commands_for_key"; - private static final String TIMESTAMP_TUPLE = "tuple<bigint, bigint, bigint>"; - private static final TupleType TIMESTAMP_TYPE = new TupleType(Lists.newArrayList(LongType.instance, LongType.instance, LongType.instance)); + private static final String TIMESTAMP_TUPLE = "tuple<bigint, bigint, int>"; + private static final TupleType TIMESTAMP_TYPE = new TupleType(Lists.newArrayList(LongType.instance, LongType.instance, Int32Type.instance)); private static final String KEY_TUPLE = "tuple<uuid, blob>"; private static final ClusteringIndexFilter FULL_PARTITION = new ClusteringIndexSliceFilter(Slices.ALL, false); @@ -532,7 +532,7 @@ public class AccordKeyspace if (bytes == null || ByteBufferAccessor.instance.isEmpty(bytes)) return null; ByteBuffer[] split = TIMESTAMP_TYPE.split(ByteBufferAccessor.instance, bytes); - return factory.create(split[0].getLong(), split[1].getLong(), new Node.Id(split[2].getLong())); + return factory.create(split[0].getLong(), split[1].getLong(), new Node.Id(split[2].getInt())); } private static <T extends Timestamp> T deserializeTimestampOrNull(UntypedResultSet.Row row, String name, TimestampFactory<T> factory) diff --git a/src/java/org/apache/cassandra/service/accord/EndpointMapping.java b/src/java/org/apache/cassandra/service/accord/EndpointMapping.java index 49717801a9..a863ca7410 100644 --- a/src/java/org/apache/cassandra/service/accord/EndpointMapping.java +++ b/src/java/org/apache/cassandra/service/accord/EndpointMapping.java @@ -25,6 +25,7 @@ import java.net.UnknownHostException; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableCollection; import com.google.common.collect.ImmutableMap; +import com.google.common.primitives.Ints; import accord.local.Node; import org.apache.cassandra.locator.InetAddressAndPort; @@ -36,33 +37,16 @@ public class EndpointMapping { Preconditions.checkArgument(endpoint.getAddress() instanceof Inet4Address); Inet4Address address = (Inet4Address) endpoint.getAddress(); - byte[] bytes = address.getAddress(); - long id = 0; - for (int i=0; i<4; i++) - id = (id * 1000) + Byte.toUnsignedLong(bytes[i]); - id = (id * 100000) + endpoint.getPort(); + int id = Ints.fromByteArray(address.getAddress()); return new Node.Id(id); } static InetAddressAndPort idToEndpoint(Node.Id node) { - long id = node.id; - Preconditions.checkArgument(id >= 0); - - int port = (int) (id % 100000); - id = id / 100000; - byte[] bytes = new byte[4]; - for (int i=0; i<4; i++) - { - long octet = id % 1000; - Preconditions.checkArgument(octet >= 0 && octet <= 255, "Malformed id"); - bytes[3-i] = (byte) (octet); - id = id / 1000; - } - Preconditions.checkArgument(id == 0); + byte[] bytes = Ints.toByteArray(node.id); try { - return InetAddressAndPort.getByAddressOverrideDefaults(InetAddress.getByAddress(bytes), port); + return InetAddressAndPort.getByAddress(InetAddress.getByAddress(bytes)); } catch (UnknownHostException e) { diff --git a/src/java/org/apache/cassandra/service/accord/serializers/TopologySerializers.java b/src/java/org/apache/cassandra/service/accord/serializers/TopologySerializers.java index 699fb22be4..04afa5b250 100644 --- a/src/java/org/apache/cassandra/service/accord/serializers/TopologySerializers.java +++ b/src/java/org/apache/cassandra/service/accord/serializers/TopologySerializers.java @@ -39,23 +39,23 @@ public class TopologySerializers @Override public void serialize(Node.Id id, DataOutputPlus out, int version) throws IOException { - out.writeLong(id.id); + out.writeInt(id.id); } public <V> int serialize(Node.Id id, V dst, ValueAccessor<V> accessor, int offset) { - return accessor.putLong(dst, offset, id.id); + return accessor.putInt(dst, offset, id.id); } @Override public Node.Id deserialize(DataInputPlus in, int version) throws IOException { - return new Node.Id(in.readLong()); + return new Node.Id(in.readInt()); } public <V> Node.Id deserialize(V src, ValueAccessor<V> accessor, int offset) { - return new Node.Id(accessor.getLong(src, offset)); + return new Node.Id(accessor.getInt(src, offset)); } @Override @@ -66,7 +66,7 @@ public class TopologySerializers public int serializedSize() { - return TypeSizes.LONG_SIZE; // id.id + return TypeSizes.INT_SIZE; // id.id } }; } diff --git a/test/unit/org/apache/cassandra/service/accord/AccordTestUtils.java b/test/unit/org/apache/cassandra/service/accord/AccordTestUtils.java index d1b5cd9038..531b513fa6 100644 --- a/test/unit/org/apache/cassandra/service/accord/AccordTestUtils.java +++ b/test/unit/org/apache/cassandra/service/accord/AccordTestUtils.java @@ -92,17 +92,17 @@ public class AccordTestUtils @Override public void waiting(TxnId blockedBy, Known blockedUntil, Unseekables<?, ?> blockedOn) {} }; - public static TxnId txnId(long epoch, long hlc, long node) + public static TxnId txnId(long epoch, long hlc, int node) { return new TxnId(epoch, hlc, Txn.Kind.Write, Key, new Node.Id(node)); } - public static Timestamp timestamp(long epoch, long hlc, long node) + public static Timestamp timestamp(long epoch, long hlc, int node) { return Timestamp.fromValues(epoch, hlc, new Node.Id(node)); } - public static Ballot ballot(long epoch, long hlc, long node) + public static Ballot ballot(long epoch, long hlc, int node) { return Ballot.fromValues(epoch, hlc, new Node.Id(node)); } diff --git a/test/unit/org/apache/cassandra/service/accord/EndpointMappingTest.java b/test/unit/org/apache/cassandra/service/accord/EndpointMappingTest.java index a9fc79d073..c35fbce0d4 100644 --- a/test/unit/org/apache/cassandra/service/accord/EndpointMappingTest.java +++ b/test/unit/org/apache/cassandra/service/accord/EndpointMappingTest.java @@ -34,7 +34,7 @@ public class EndpointMappingTest @Test public void identityTest() throws Throwable { - InetAddressAndPort endpoint = InetAddressAndPort.getByName("127.0.0.1:9000"); + InetAddressAndPort endpoint = InetAddressAndPort.getByName("127.0.0.1"); Node.Id id = EndpointMapping.endpointToId(endpoint); Assert.assertEquals(endpoint, EndpointMapping.idToEndpoint(id)); logger.info("{} -> {}", endpoint, id); diff --git a/test/unit/org/apache/cassandra/service/accord/serializers/TopologySerializersTest.java b/test/unit/org/apache/cassandra/service/accord/serializers/TopologySerializersTest.java index c92c9839fe..835d36313d 100644 --- a/test/unit/org/apache/cassandra/service/accord/serializers/TopologySerializersTest.java +++ b/test/unit/org/apache/cassandra/service/accord/serializers/TopologySerializersTest.java @@ -29,7 +29,7 @@ public class TopologySerializersTest @Test public void nodeId() { - SerializerTestUtils.assertSerializerIOEquality(new Node.Id(1234567890123456L), TopologySerializers.nodeId); + SerializerTestUtils.assertSerializerIOEquality(new Node.Id(1234567890), TopologySerializers.nodeId); } @Test --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org