krummas commented on code in PR #3088:
URL: https://github.com/apache/cassandra/pull/3088#discussion_r1479754070
##########
src/java/org/apache/cassandra/tcm/log/LogState.java:
##########
@@ -237,31 +171,122 @@ public Serializer(Version serializationVersion)
@Override
public void serialize(LogState t, DataOutputPlus out, int version)
throws IOException
{
- out.writeBoolean(t.baseState != null);
- if (t.baseState != null)
-
VerboseMetadataSerializer.serialize(ClusterMetadata.serializer, t.baseState,
out, serializationVersion);
- VerboseMetadataSerializer.serialize(Replication.serializer,
t.transformations, out, serializationVersion);
+ VerboseMetadataSerializer.serialize(metadataSerializer, t, out,
serializationVersion);
}
@Override
public LogState deserialize(DataInputPlus in, int version) throws
IOException
{
- boolean hasSnapshot = in.readBoolean();
- ClusterMetadata snapshot = null;
- if (hasSnapshot)
- snapshot =
VerboseMetadataSerializer.deserialize(ClusterMetadata.serializer, in);
- Replication replication =
VerboseMetadataSerializer.deserialize(Replication.serializer, in);
- return new LogState(snapshot, replication);
+ return VerboseMetadataSerializer.deserialize(metadataSerializer,
in);
}
@Override
public long serializedSize(LogState t, int version)
{
- long size = TypeSizes.BOOL_SIZE;
+ return
VerboseMetadataSerializer.serializedSize(metadataSerializer, t,
serializationVersion);
+ }
+ }
+
+ static final class MetadataSerializer implements
org.apache.cassandra.tcm.serialization.MetadataSerializer<LogState>
+ {
+ @Override
+ public void serialize(LogState t, DataOutputPlus out, Version version)
throws IOException
+ {
+ out.writeBoolean(t.baseState != null);
if (t.baseState != null)
- size +=
VerboseMetadataSerializer.serializedSize(ClusterMetadata.serializer,
t.baseState, serializationVersion);
- size +=
VerboseMetadataSerializer.serializedSize(Replication.serializer,
t.transformations, serializationVersion);
+ ClusterMetadata.serializer.serialize(t.baseState, out,
version);
+ out.writeInt(t.entries.size());
+ for (Entry entry : t.entries)
+ Entry.serializer.serialize(entry, out, version);
+ }
+
+ @Override
+ public LogState deserialize(DataInputPlus in, Version version) throws
IOException
+ {
+ ClusterMetadata baseState = null;
+ if (in.readBoolean())
+ baseState = ClusterMetadata.serializer.deserialize(in,
version);
+ int size = in.readInt();
+ ImmutableList.Builder<Entry> builder = ImmutableList.builder();
+ for(int i=0;i<size;i++)
+ builder.add(Entry.serializer.deserialize(in, version));
+ return new LogState(baseState, builder.build());
+ }
+
+ @Override
+ public long serializedSize(LogState t, Version version)
+ {
+ long size = TypeSizes.sizeof(t.baseState != null);
+ if (t.baseState != null)
+ size += ClusterMetadata.serializer.serializedSize(t.baseState,
version);
+ size += TypeSizes.INT_SIZE;
+ for (Entry entry : t.entries)
+ size += Entry.serializer.serializedSize(entry, version);
return size;
}
}
+
+ public static final class ReplicationHandler implements
IVerbHandler<LogState>
+ {
+ private static final Logger logger =
LoggerFactory.getLogger(ReplicationHandler.class);
+ private final LocalLog log;
+
+ public ReplicationHandler(LocalLog log)
+ {
+ this.log = log;
+ }
+
+ public void doVerb(Message<LogState> message) throws IOException
+ {
+ logger.info("Received logstate {} from {}", message.payload,
message.from());
Review Comment:
I fixed the toString on LogState
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]