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

Reply via email to