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 <[email protected]>
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: [email protected]
For additional commands, e-mail: [email protected]