This is an automated email from the ASF dual-hosted git repository.
jensdeppe pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/geode.git
The following commit(s) were added to refs/heads/develop by this push:
new 5dce03c GEODE-10125: Switch Radish data structures to use
DataSerializable (#7512)
5dce03c is described below
commit 5dce03c9136e66d2497fdcbad8943620442d956b
Author: Jens Deppe <[email protected]>
AuthorDate: Fri Apr 1 06:29:14 2022 -0700
GEODE-10125: Switch Radish data structures to use DataSerializable (#7512)
---
.../codeAnalysis/sanctionedDataSerializables.txt | 24 ++++++-------
.../geode/redis/internal/GeodeRedisService.java | 31 ++---------------
.../geode/redis/internal/RedisConstants.java | 13 ++++++++
.../redis/internal/data/AbstractRedisData.java | 7 ++--
.../geode/redis/internal/data/NullRedisData.java | 31 ++++++++---------
.../geode/redis/internal/data/RedisData.java | 4 +--
.../geode/redis/internal/data/RedisHash.java | 34 +++++++++----------
.../apache/geode/redis/internal/data/RedisKey.java | 32 ++++++++----------
.../geode/redis/internal/data/RedisList.java | 35 +++++++++----------
.../apache/geode/redis/internal/data/RedisSet.java | 34 +++++++++----------
.../geode/redis/internal/data/RedisSortedSet.java | 35 ++++++++++---------
.../geode/redis/internal/data/RedisString.java | 33 +++++++++---------
.../data/delta/AddByteArrayDoublePairs.java | 6 ++--
.../internal/data/delta/AddByteArrayPairs.java | 6 ++--
.../redis/internal/data/delta/AddByteArrays.java | 6 ++--
.../internal/data/delta/AddByteArraysTail.java | 6 ++--
.../internal/data/delta/RemoveByteArrays.java | 6 ++--
.../internal/data/delta/RemoveElementsByIndex.java | 6 ++--
.../data/delta/ReplaceByteArrayAtOffset.java | 6 ++--
.../data/delta/ReplaceByteArrayDoublePairs.java | 6 ++--
.../internal/data/delta/ReplaceByteArrays.java | 6 ++--
.../internal/data/delta/ReplaceByteAtOffset.java | 7 ++--
.../geode/redis/internal/pubsub/Publisher.java | 39 ++++++++++------------
.../internal/services/cluster/RedisMemberInfo.java | 36 ++++++++++----------
...serialization.DataSerializableFixedIdRegistrant | 16 ---------
.../geode/redis/internal/data/RedisHashTest.java | 5 ++-
.../geode/redis/internal/data/RedisListTest.java | 8 ++---
.../geode/redis/internal/data/RedisSetTest.java | 10 +++---
.../redis/internal/data/RedisSortedSetTest.java | 5 ++-
.../geode/redis/internal/data/RedisStringTest.java | 8 ++---
.../serialization/DataSerializableFixedID.java | 12 +------
31 files changed, 212 insertions(+), 301 deletions(-)
diff --git
a/geode-for-redis/src/integrationTest/resources/org/apache/geode/codeAnalysis/sanctionedDataSerializables.txt
b/geode-for-redis/src/integrationTest/resources/org/apache/geode/codeAnalysis/sanctionedDataSerializables.txt
index 5c1cf88..096dd65 100644
---
a/geode-for-redis/src/integrationTest/resources/org/apache/geode/codeAnalysis/sanctionedDataSerializables.txt
+++
b/geode-for-redis/src/integrationTest/resources/org/apache/geode/codeAnalysis/sanctionedDataSerializables.txt
@@ -7,32 +7,32 @@ fromData,8
toData,8
org/apache/geode/redis/internal/data/RedisHash,2
-toData,15
-fromData,58
+toData,14
+fromData,55
org/apache/geode/redis/internal/data/RedisKey,2
fromData,19
toData,19
org/apache/geode/redis/internal/data/RedisList,2
-toData,55
-fromData,42
+toData,52
+fromData,39
org/apache/geode/redis/internal/data/RedisSet,2
-toData,55
-fromData,51
+toData,52
+fromData,48
org/apache/geode/redis/internal/data/RedisSortedSet,2
-toData,15
-fromData,86
+toData,14
+fromData,83
org/apache/geode/redis/internal/data/RedisString,2
-toData,15
-fromData,15
+toData,14
+fromData,14
org/apache/geode/redis/internal/pubsub/Publisher$PublishRequest,2
-fromData,55
-toData,61
+fromData,53
+toData,59
org/apache/geode/redis/internal/services/cluster/RedisMemberInfo,2
fromData,28
diff --git
a/geode-for-redis/src/main/java/org/apache/geode/redis/internal/GeodeRedisService.java
b/geode-for-redis/src/main/java/org/apache/geode/redis/internal/GeodeRedisService.java
index 6a72f37..ba87db7 100644
---
a/geode-for-redis/src/main/java/org/apache/geode/redis/internal/GeodeRedisService.java
+++
b/geode-for-redis/src/main/java/org/apache/geode/redis/internal/GeodeRedisService.java
@@ -23,23 +23,10 @@ import org.apache.geode.distributed.internal.ResourceEvent;
import org.apache.geode.distributed.internal.ResourceEventsListener;
import org.apache.geode.internal.cache.CacheService;
import org.apache.geode.internal.cache.InternalCache;
-import org.apache.geode.internal.serialization.DataSerializableFixedID;
-import
org.apache.geode.internal.serialization.DataSerializableFixedIdRegistrant;
-import
org.apache.geode.internal.serialization.DataSerializableFixedIdRegistrar;
import org.apache.geode.logging.internal.log4j.api.LogService;
import org.apache.geode.management.internal.beans.CacheServiceMBeanBase;
-import org.apache.geode.redis.internal.data.NullRedisData;
-import org.apache.geode.redis.internal.data.RedisHash;
-import org.apache.geode.redis.internal.data.RedisKey;
-import org.apache.geode.redis.internal.data.RedisList;
-import org.apache.geode.redis.internal.data.RedisSet;
-import org.apache.geode.redis.internal.data.RedisSortedSet;
-import org.apache.geode.redis.internal.data.RedisString;
-import org.apache.geode.redis.internal.pubsub.Publisher;
-import org.apache.geode.redis.internal.services.cluster.RedisMemberInfo;
-
-public class GeodeRedisService implements CacheService, ResourceEventsListener,
- DataSerializableFixedIdRegistrant {
+
+public class GeodeRedisService implements CacheService, ResourceEventsListener
{
private static final Logger logger = LogService.getLogger();
private GeodeRedisServer redisServer;
private InternalCache cache;
@@ -57,20 +44,6 @@ public class GeodeRedisService implements CacheService,
ResourceEventsListener,
}
@Override
- public void register(DataSerializableFixedIdRegistrar registrar) {
- registrar.register(DataSerializableFixedID.REDIS_KEY, RedisKey.class);
- registrar.register(DataSerializableFixedID.PUBLISH_REQUEST,
- Publisher.PublishRequest.class);
- registrar.register(DataSerializableFixedID.REDIS_LIST_ID, RedisList.class);
- registrar.register(DataSerializableFixedID.REDIS_SET_ID, RedisSet.class);
- registrar.register(DataSerializableFixedID.REDIS_STRING_ID,
RedisString.class);
- registrar.register(DataSerializableFixedID.REDIS_HASH_ID, RedisHash.class);
- registrar.register(DataSerializableFixedID.REDIS_NULL_DATA_ID,
NullRedisData.class);
- registrar.register(DataSerializableFixedID.REDIS_MEMBER_INFO_ID,
RedisMemberInfo.class);
- registrar.register(DataSerializableFixedID.REDIS_SORTED_SET_ID,
RedisSortedSet.class);
- }
-
- @Override
public void close() {
stopRedisServer();
}
diff --git
a/geode-for-redis/src/main/java/org/apache/geode/redis/internal/RedisConstants.java
b/geode-for-redis/src/main/java/org/apache/geode/redis/internal/RedisConstants.java
index 1be3ccc..ab79b0d 100644
---
a/geode-for-redis/src/main/java/org/apache/geode/redis/internal/RedisConstants.java
+++
b/geode-for-redis/src/main/java/org/apache/geode/redis/internal/RedisConstants.java
@@ -22,6 +22,19 @@ import
org.apache.geode.redis.internal.commands.executor.server.CommandCommandEx
public class RedisConstants {
/*
+ * DataSerializable Instantiator IDs
+ */
+ public static int PUBLISH_REQUEST_DATA_SERIALIZABLE_ID = 1045;
+ public static int MEMBER_INFO_DATA_SERIALIZABLE_ID = 1046;
+ public static int REDIS_NULL_DATA_DATA_SERIALIZABLE_ID = 1047;
+ public static int REDIS_KEY_DATA_SERIALIZABLE_ID = 1048;
+ public static int REDIS_LIST_DATA_SERIALIZABLE_ID = 1049;
+ public static int REDIS_SET_DATA_SERIALIZABLE_ID = 1050;
+ public static int REDIS_STRING_DATA_SERIALIZABLE_ID = 1051;
+ public static int REDIS_HASH_DATA_SERIALIZABLE_ID = 1052;
+ public static int REDIS_SORTED_SET_DATA_SERIALIZABLE_ID = 1053;
+
+ /*
* Error responses
*/
public static final String PARSING_EXCEPTION_MESSAGE =
diff --git
a/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/AbstractRedisData.java
b/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/AbstractRedisData.java
index 6f2692c..eb0b8f0 100644
---
a/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/AbstractRedisData.java
+++
b/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/AbstractRedisData.java
@@ -52,9 +52,7 @@ import org.apache.geode.internal.cache.BucketRegion;
import org.apache.geode.internal.cache.LocalDataSet;
import org.apache.geode.internal.cache.PartitionedRegion;
import org.apache.geode.internal.cache.TXId;
-import org.apache.geode.internal.serialization.DeserializationContext;
import org.apache.geode.internal.serialization.KnownVersion;
-import org.apache.geode.internal.serialization.SerializationContext;
import org.apache.geode.redis.internal.data.delta.AddByteArrayDoublePairs;
import org.apache.geode.redis.internal.data.delta.AddByteArrayPairs;
import org.apache.geode.redis.internal.data.delta.AddByteArrays;
@@ -216,14 +214,13 @@ public abstract class AbstractRedisData implements
RedisData {
}
@Override
- public void toData(DataOutput out, SerializationContext context) throws
IOException {
+ public void toData(DataOutput out) throws IOException {
out.writeByte(version);
out.writeLong(expirationTimestamp);
}
@Override
- public void fromData(DataInput in, DeserializationContext context)
- throws IOException, ClassNotFoundException {
+ public void fromData(DataInput in) throws IOException,
ClassNotFoundException {
version = in.readByte();
expirationTimestamp = in.readLong();
}
diff --git
a/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/NullRedisData.java
b/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/NullRedisData.java
index 4b11d7c..253b10e 100644
---
a/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/NullRedisData.java
+++
b/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/NullRedisData.java
@@ -17,14 +17,15 @@
package org.apache.geode.redis.internal.data;
+import static
org.apache.geode.redis.internal.RedisConstants.REDIS_NULL_DATA_DATA_SERIALIZABLE_ID;
+
import java.io.DataInput;
import java.io.DataOutput;
+import org.apache.geode.DataSerializable;
+import org.apache.geode.Instantiator;
import org.apache.geode.InvalidDeltaException;
import org.apache.geode.cache.Region;
-import org.apache.geode.internal.serialization.DeserializationContext;
-import org.apache.geode.internal.serialization.KnownVersion;
-import org.apache.geode.internal.serialization.SerializationContext;
import org.apache.geode.redis.internal.netty.ExecutionHandlerContext;
import org.apache.geode.redis.internal.services.RegionProvider;
@@ -32,6 +33,16 @@ import
org.apache.geode.redis.internal.services.RegionProvider;
* Implements behaviour for when no instance of RedisData exists.
*/
public class NullRedisData implements RedisData {
+
+ static {
+ Instantiator
+ .register(new Instantiator(NullRedisData.class,
REDIS_NULL_DATA_DATA_SERIALIZABLE_ID) {
+ public DataSerializable newInstance() {
+ return new NullRedisData();
+ }
+ });
+ }
+
@Override
public boolean isNull() {
return true;
@@ -103,26 +114,16 @@ public class NullRedisData implements RedisData {
}
@Override
- public int getDSFID() {
- return REDIS_NULL_DATA_ID;
- }
-
- @Override
- public void toData(DataOutput out, SerializationContext context) {
+ public void toData(DataOutput out) {
throw new UnsupportedOperationException();
}
@Override
- public void fromData(DataInput in, DeserializationContext context) {
+ public void fromData(DataInput in) {
throw new UnsupportedOperationException();
}
@Override
- public KnownVersion[] getSerializationVersions() {
- return null;
- }
-
- @Override
public boolean hasDelta() {
return false;
}
diff --git
a/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/RedisData.java
b/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/RedisData.java
index cbfb691..673c47e 100644
---
a/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/RedisData.java
+++
b/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/RedisData.java
@@ -25,10 +25,10 @@ import java.io.DataInputStream;
import java.io.IOException;
import java.util.Arrays;
+import org.apache.geode.DataSerializable;
import org.apache.geode.DataSerializer;
import org.apache.geode.Delta;
import org.apache.geode.cache.Region;
-import org.apache.geode.internal.serialization.DataSerializableFixedID;
import org.apache.geode.internal.serialization.KnownVersion;
import org.apache.geode.internal.serialization.VersionedDataInputStream;
import org.apache.geode.internal.size.Sizeable;
@@ -37,7 +37,7 @@ import org.apache.geode.redis.internal.RedisException;
import org.apache.geode.redis.internal.netty.ExecutionHandlerContext;
import org.apache.geode.redis.internal.services.RegionProvider;
-public interface RedisData extends Delta, DataSerializableFixedID, Sizeable {
+public interface RedisData extends Delta, DataSerializable, Sizeable {
/**
* Returns true if this instance does not exist.
diff --git
a/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/RedisHash.java
b/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/RedisHash.java
index 7e044f7..e8750fc 100644
---
a/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/RedisHash.java
+++
b/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/RedisHash.java
@@ -20,6 +20,7 @@ import static
org.apache.geode.internal.JvmSizeUtils.memoryOverhead;
import static org.apache.geode.redis.internal.RedisConstants.ERROR_NOT_INTEGER;
import static org.apache.geode.redis.internal.RedisConstants.ERROR_OVERFLOW;
import static
org.apache.geode.redis.internal.RedisConstants.HASH_VALUE_NOT_FLOAT;
+import static
org.apache.geode.redis.internal.RedisConstants.REDIS_HASH_DATA_SERIALIZABLE_ID;
import static org.apache.geode.redis.internal.netty.Coder.bytesToLong;
import static org.apache.geode.redis.internal.netty.Coder.bytesToString;
@@ -37,12 +38,11 @@ import java.util.Objects;
import org.apache.commons.lang3.tuple.ImmutablePair;
+import org.apache.geode.DataSerializable;
import org.apache.geode.DataSerializer;
+import org.apache.geode.Instantiator;
import org.apache.geode.annotations.VisibleForTesting;
import org.apache.geode.cache.Region;
-import org.apache.geode.internal.serialization.DeserializationContext;
-import org.apache.geode.internal.serialization.KnownVersion;
-import org.apache.geode.internal.serialization.SerializationContext;
import org.apache.geode.logging.internal.log4j.api.LogService;
import org.apache.geode.redis.internal.commands.executor.GlobPattern;
import
org.apache.geode.redis.internal.data.collections.SizeableBytes2ObjectOpenCustomHashMapWithCursor;
@@ -51,6 +51,15 @@ import
org.apache.geode.redis.internal.data.delta.RemoveByteArrays;
import org.apache.geode.redis.internal.netty.Coder;
public class RedisHash extends AbstractRedisData {
+
+ static {
+ Instantiator.register(new Instantiator(RedisHash.class,
REDIS_HASH_DATA_SERIALIZABLE_ID) {
+ public DataSerializable newInstance() {
+ return new RedisHash();
+ }
+ });
+ }
+
protected static final int REDIS_HASH_OVERHEAD =
memoryOverhead(RedisHash.class);
private Hash hash;
@@ -81,15 +90,14 @@ public class RedisHash extends AbstractRedisData {
* to be thread safe with toData.
*/
@Override
- public synchronized void toData(DataOutput out, SerializationContext
context) throws IOException {
- super.toData(out, context);
+ public synchronized void toData(DataOutput out) throws IOException {
+ super.toData(out);
hash.toData(out);
}
@Override
- public void fromData(DataInput in, DeserializationContext context)
- throws IOException, ClassNotFoundException {
- super.fromData(in, context);
+ public void fromData(DataInput in) throws IOException,
ClassNotFoundException {
+ super.fromData(in);
int size = DataSerializer.readInteger(in);
hash = new Hash(size);
for (int i = 0; i < size; i++) {
@@ -97,11 +105,6 @@ public class RedisHash extends AbstractRedisData {
}
}
- @Override
- public int getDSFID() {
- return REDIS_HASH_ID;
- }
-
synchronized byte[] hashPut(byte[] field, byte[] value) {
return hash.put(field, value);
}
@@ -356,11 +359,6 @@ public class RedisHash extends AbstractRedisData {
}
@Override
- public KnownVersion[] getSerializationVersions() {
- return null;
- }
-
- @Override
public int getSizeInBytes() {
return REDIS_HASH_OVERHEAD + hash.getSizeInBytes();
}
diff --git
a/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/RedisKey.java
b/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/RedisKey.java
index 8316ef9..8a0c271 100644
---
a/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/RedisKey.java
+++
b/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/RedisKey.java
@@ -15,6 +15,7 @@
package org.apache.geode.redis.internal.data;
+import static
org.apache.geode.redis.internal.RedisConstants.REDIS_KEY_DATA_SERIALIZABLE_ID;
import static org.apache.geode.redis.internal.netty.Coder.bytesToString;
import static
org.apache.geode.redis.internal.services.RegionProvider.REDIS_SLOTS_PER_BUCKET;
@@ -23,14 +24,20 @@ import java.io.DataOutput;
import java.io.IOException;
import java.util.Arrays;
+import org.apache.geode.DataSerializable;
import org.apache.geode.DataSerializer;
-import org.apache.geode.internal.serialization.DataSerializableFixedID;
-import org.apache.geode.internal.serialization.DeserializationContext;
-import org.apache.geode.internal.serialization.KnownVersion;
-import org.apache.geode.internal.serialization.SerializationContext;
+import org.apache.geode.Instantiator;
import
org.apache.geode.redis.internal.commands.executor.cluster.RedisPartitionResolver;
-public class RedisKey implements DataSerializableFixedID {
+public class RedisKey implements DataSerializable {
+
+ static {
+ Instantiator.register(new Instantiator(RedisKey.class,
REDIS_KEY_DATA_SERIALIZABLE_ID) {
+ public DataSerializable newInstance() {
+ return new RedisKey();
+ }
+ });
+ }
private short slot;
private byte[] value;
@@ -66,29 +73,18 @@ public class RedisKey implements DataSerializableFixedID {
}
@Override
- public int getDSFID() {
- return DataSerializableFixedID.REDIS_KEY;
- }
-
- @Override
- public void toData(DataOutput out, SerializationContext context) throws
IOException {
+ public void toData(DataOutput out) throws IOException {
out.writeShort(slot);
DataSerializer.writeByteArray(value, out);
}
@Override
- public void fromData(DataInput in, DeserializationContext context)
- throws IOException {
+ public void fromData(DataInput in) throws IOException {
slot = in.readShort();
value = DataSerializer.readByteArray(in);
}
@Override
- public KnownVersion[] getSerializationVersions() {
- return null;
- }
-
- @Override
public String toString() {
return bytesToString(value);
}
diff --git
a/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/RedisList.java
b/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/RedisList.java
index 823a91c..3696519 100644
---
a/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/RedisList.java
+++
b/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/RedisList.java
@@ -18,6 +18,7 @@ package org.apache.geode.redis.internal.data;
import static org.apache.geode.internal.JvmSizeUtils.memoryOverhead;
import static
org.apache.geode.redis.internal.RedisConstants.ERROR_INDEX_OUT_OF_RANGE;
+import static
org.apache.geode.redis.internal.RedisConstants.REDIS_LIST_DATA_SERIALIZABLE_ID;
import static org.apache.geode.redis.internal.data.RedisDataType.REDIS_LIST;
import java.io.DataInput;
@@ -30,11 +31,10 @@ import java.util.List;
import java.util.ListIterator;
import java.util.Objects;
+import org.apache.geode.DataSerializable;
import org.apache.geode.DataSerializer;
+import org.apache.geode.Instantiator;
import org.apache.geode.cache.Region;
-import org.apache.geode.internal.serialization.DeserializationContext;
-import org.apache.geode.internal.serialization.KnownVersion;
-import org.apache.geode.internal.serialization.SerializationContext;
import org.apache.geode.redis.internal.RedisException;
import org.apache.geode.redis.internal.commands.Command;
import org.apache.geode.redis.internal.data.collections.SizeableByteArrayList;
@@ -49,6 +49,15 @@ import
org.apache.geode.redis.internal.netty.ExecutionHandlerContext;
import org.apache.geode.redis.internal.services.RegionProvider;
public class RedisList extends AbstractRedisData {
+
+ static {
+ Instantiator.register(new Instantiator(RedisList.class,
REDIS_LIST_DATA_SERIALIZABLE_ID) {
+ public DataSerializable newInstance() {
+ return new RedisList();
+ }
+ });
+ }
+
protected static final int REDIS_LIST_OVERHEAD =
memoryOverhead(RedisList.class);
private final SizeableByteArrayList elementList;
@@ -295,7 +304,6 @@ public class RedisList extends AbstractRedisData {
}
/**
- *
* @param context The {@link ExecutionHandlerContext} for this operation,
passed to allow events
* to be triggered
* @param source The {@link RedisKey} associated with the source RedisList
@@ -373,8 +381,8 @@ public class RedisList extends AbstractRedisData {
*/
@Override
- public synchronized void toData(DataOutput out, SerializationContext
context) throws IOException {
- super.toData(out, context);
+ public synchronized void toData(DataOutput out) throws IOException {
+ super.toData(out);
DataSerializer.writePrimitiveInt(elementList.size(), out);
for (byte[] element : elementList) {
DataSerializer.writeByteArray(element, out);
@@ -382,9 +390,8 @@ public class RedisList extends AbstractRedisData {
}
@Override
- public void fromData(DataInput in, DeserializationContext context)
- throws IOException, ClassNotFoundException {
- super.fromData(in, context);
+ public void fromData(DataInput in) throws IOException,
ClassNotFoundException {
+ super.fromData(in);
int size = DataSerializer.readPrimitiveInt(in);
for (int i = 0; i < size; ++i) {
byte[] element = DataSerializer.readByteArray(in);
@@ -392,11 +399,6 @@ public class RedisList extends AbstractRedisData {
}
}
- @Override
- public int getDSFID() {
- return REDIS_LIST_ID;
- }
-
public synchronized int elementInsert(byte[] elementToInsert, byte[]
referenceElement,
boolean before) {
int i = 0;
@@ -481,11 +483,6 @@ public class RedisList extends AbstractRedisData {
}
@Override
- public KnownVersion[] getSerializationVersions() {
- return null;
- }
-
- @Override
public int getSizeInBytes() {
return REDIS_LIST_OVERHEAD + elementList.getSizeInBytes();
}
diff --git
a/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/RedisSet.java
b/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/RedisSet.java
index c53b6af..4bc1a44 100644
---
a/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/RedisSet.java
+++
b/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/RedisSet.java
@@ -17,6 +17,7 @@
package org.apache.geode.redis.internal.data;
import static org.apache.geode.internal.JvmSizeUtils.memoryOverhead;
+import static
org.apache.geode.redis.internal.RedisConstants.REDIS_SET_DATA_SERIALIZABLE_ID;
import static
org.apache.geode.redis.internal.data.NullRedisDataStructures.NULL_REDIS_SET;
import static org.apache.geode.redis.internal.data.RedisDataType.REDIS_SET;
@@ -36,12 +37,11 @@ import it.unimi.dsi.fastutil.bytes.ByteArrays;
import org.apache.commons.lang3.tuple.ImmutablePair;
import org.apache.commons.lang3.tuple.Pair;
+import org.apache.geode.DataSerializable;
import org.apache.geode.DataSerializer;
+import org.apache.geode.Instantiator;
import org.apache.geode.annotations.VisibleForTesting;
import org.apache.geode.cache.Region;
-import org.apache.geode.internal.serialization.DeserializationContext;
-import org.apache.geode.internal.serialization.KnownVersion;
-import org.apache.geode.internal.serialization.SerializationContext;
import org.apache.geode.redis.internal.commands.executor.GlobPattern;
import
org.apache.geode.redis.internal.data.collections.SizeableObjectOpenCustomHashSetWithCursor;
import org.apache.geode.redis.internal.data.delta.AddByteArrays;
@@ -50,6 +50,15 @@ import
org.apache.geode.redis.internal.data.delta.ReplaceByteArrays;
import org.apache.geode.redis.internal.services.RegionProvider;
public class RedisSet extends AbstractRedisData {
+
+ static {
+ Instantiator.register(new Instantiator(RedisSet.class,
REDIS_SET_DATA_SERIALIZABLE_ID) {
+ public DataSerializable newInstance() {
+ return new RedisSet();
+ }
+ });
+ }
+
protected static final int REDIS_SET_OVERHEAD =
memoryOverhead(RedisSet.class);
private MemberSet members;
@@ -381,8 +390,8 @@ public class RedisSet extends AbstractRedisData {
*/
@Override
- public synchronized void toData(DataOutput out, SerializationContext
context) throws IOException {
- super.toData(out, context);
+ public synchronized void toData(DataOutput out) throws IOException {
+ super.toData(out);
DataSerializer.writePrimitiveInt(members.size(), out);
for (byte[] member : members) {
DataSerializer.writeByteArray(member, out);
@@ -390,9 +399,8 @@ public class RedisSet extends AbstractRedisData {
}
@Override
- public void fromData(DataInput in, DeserializationContext context)
- throws IOException, ClassNotFoundException {
- super.fromData(in, context);
+ public void fromData(DataInput in) throws IOException,
ClassNotFoundException {
+ super.fromData(in);
int size = DataSerializer.readPrimitiveInt(in);
members = new MemberSet(size);
for (int i = 0; i < size; ++i) {
@@ -400,11 +408,6 @@ public class RedisSet extends AbstractRedisData {
}
}
- @Override
- public int getDSFID() {
- return REDIS_SET_ID;
- }
-
@VisibleForTesting
synchronized boolean membersAdd(byte[] memberToAdd) {
return members.add(memberToAdd);
@@ -519,11 +522,6 @@ public class RedisSet extends AbstractRedisData {
}
@Override
- public KnownVersion[] getSerializationVersions() {
- return null;
- }
-
- @Override
public int getSizeInBytes() {
return REDIS_SET_OVERHEAD + members.getSizeInBytes();
}
diff --git
a/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/RedisSortedSet.java
b/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/RedisSortedSet.java
index cd44b35..e958961 100644
---
a/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/RedisSortedSet.java
+++
b/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/RedisSortedSet.java
@@ -18,6 +18,7 @@ package org.apache.geode.redis.internal.data;
import static java.lang.Double.compare;
import static org.apache.geode.internal.JvmSizeUtils.memoryOverhead;
+import static
org.apache.geode.redis.internal.RedisConstants.REDIS_SORTED_SET_DATA_SERIALIZABLE_ID;
import static
org.apache.geode.redis.internal.data.NullRedisDataStructures.NULL_REDIS_SORTED_SET;
import static
org.apache.geode.redis.internal.data.RedisDataType.REDIS_SORTED_SET;
import static org.apache.geode.redis.internal.netty.Coder.doubleToBytes;
@@ -37,12 +38,11 @@ import java.util.Objects;
import org.apache.commons.lang3.tuple.ImmutablePair;
import org.apache.logging.log4j.Logger;
+import org.apache.geode.DataSerializable;
import org.apache.geode.DataSerializer;
+import org.apache.geode.Instantiator;
import org.apache.geode.annotations.VisibleForTesting;
import org.apache.geode.cache.Region;
-import org.apache.geode.internal.serialization.DeserializationContext;
-import org.apache.geode.internal.serialization.KnownVersion;
-import org.apache.geode.internal.serialization.SerializationContext;
import org.apache.geode.internal.size.Sizeable;
import org.apache.geode.logging.internal.log4j.api.LogService;
import org.apache.geode.redis.internal.RedisConstants;
@@ -63,6 +63,16 @@ import org.apache.geode.redis.internal.netty.Coder;
import org.apache.geode.redis.internal.services.RegionProvider;
public class RedisSortedSet extends AbstractRedisData {
+
+ static {
+ Instantiator
+ .register(new Instantiator(RedisSortedSet.class,
REDIS_SORTED_SET_DATA_SERIALIZABLE_ID) {
+ public DataSerializable newInstance() {
+ return new RedisSortedSet();
+ }
+ });
+ }
+
protected static final int REDIS_SORTED_SET_OVERHEAD =
memoryOverhead(RedisSortedSet.class);
private static final Logger logger = LogService.getLogger();
@@ -124,15 +134,14 @@ public class RedisSortedSet extends AbstractRedisData {
*/
@Override
- public synchronized void toData(DataOutput out, SerializationContext
context) throws IOException {
- super.toData(out, context);
+ public synchronized void toData(DataOutput out) throws IOException {
+ super.toData(out);
members.toData(out);
}
@Override
- public void fromData(DataInput in, DeserializationContext context)
- throws IOException, ClassNotFoundException {
- super.fromData(in, context);
+ public void fromData(DataInput in) throws IOException,
ClassNotFoundException {
+ super.fromData(in);
int size = DataSerializer.readPrimitiveInt(in);
members = new MemberMap(size);
for (int i = 0; i < size; i++) {
@@ -169,11 +178,6 @@ public class RedisSortedSet extends AbstractRedisData {
});
}
- @Override
- public int getDSFID() {
- return REDIS_SORTED_SET_ID;
- }
-
protected synchronized MemberAddResult memberAdd(byte[] memberToAdd, double
scoreToAdd) {
OrderedSetEntry entry = members.get(memberToAdd);
if (entry == null) {
@@ -730,11 +734,6 @@ public class RedisSortedSet extends AbstractRedisData {
return "RedisSortedSet{" + super.toString() + ", " + "size=" +
members.size() + '}';
}
- @Override
- public KnownVersion[] getSerializationVersions() {
- return null;
- }
-
// Comparison to allow the use of LEAST_MEMBER_NAME and GREATEST_MEMBER_NAME
to always be less
// than or greater than respectively any other byte array representing a
member name. The use of
// "==" is important as it allows us to differentiate between the constant
byte arrays defined
diff --git
a/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/RedisString.java
b/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/RedisString.java
index 18bcda7..a499abf 100644
---
a/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/RedisString.java
+++
b/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/RedisString.java
@@ -17,6 +17,7 @@
package org.apache.geode.redis.internal.data;
import static org.apache.geode.internal.JvmSizeUtils.memoryOverhead;
+import static
org.apache.geode.redis.internal.RedisConstants.REDIS_STRING_DATA_SERIALIZABLE_ID;
import static org.apache.geode.redis.internal.netty.Coder.bytesToString;
import java.io.DataInput;
@@ -25,12 +26,11 @@ import java.io.IOException;
import java.math.BigDecimal;
import java.util.Arrays;
+import org.apache.geode.DataSerializable;
import org.apache.geode.DataSerializer;
+import org.apache.geode.Instantiator;
import org.apache.geode.annotations.VisibleForTesting;
import org.apache.geode.cache.Region;
-import org.apache.geode.internal.serialization.DeserializationContext;
-import org.apache.geode.internal.serialization.KnownVersion;
-import org.apache.geode.internal.serialization.SerializationContext;
import org.apache.geode.redis.internal.RedisConstants;
import org.apache.geode.redis.internal.commands.executor.string.SetOptions;
import org.apache.geode.redis.internal.data.delta.AppendByteArray;
@@ -42,6 +42,14 @@ import org.apache.geode.redis.internal.netty.Coder;
public class RedisString extends AbstractRedisData {
+ static {
+ Instantiator.register(new Instantiator(RedisString.class,
REDIS_STRING_DATA_SERIALIZABLE_ID) {
+ public DataSerializable newInstance() {
+ return new RedisString();
+ }
+ });
+ }
+
private static final int REDIS_STRING_OVERHEAD =
memoryOverhead(RedisString.class);
// An array containing the number of set bits for each value from 0x00 to
0xff
private static final byte[] bitCountTable = getBitCountTable();
@@ -365,25 +373,19 @@ public class RedisString extends AbstractRedisData {
*/
@Override
- public synchronized void toData(DataOutput out, SerializationContext
context) throws IOException {
- super.toData(out, context);
+ public synchronized void toData(DataOutput out) throws IOException {
+ super.toData(out);
DataSerializer.writeByteArray(value, out);
}
@Override
- public void fromData(DataInput in, DeserializationContext context)
- throws IOException, ClassNotFoundException {
- super.fromData(in, context);
+ public void fromData(DataInput in) throws IOException,
ClassNotFoundException {
+ super.fromData(in);
value = DataSerializer.readByteArray(in);
}
@Override
- public int getDSFID() {
- return REDIS_STRING_ID;
- }
-
- @Override
public void applySetByteArrayDelta(byte[] bytes) {
value = bytes;
}
@@ -478,11 +480,6 @@ public class RedisString extends AbstractRedisData {
}
@Override
- public KnownVersion[] getSerializationVersions() {
- return null;
- }
-
- @Override
public int getSizeInBytes() {
return REDIS_STRING_OVERHEAD + memoryOverhead(value);
}
diff --git
a/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/delta/AddByteArrayDoublePairs.java
b/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/delta/AddByteArrayDoublePairs.java
index e2f46eb..a81b98f 100644
---
a/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/delta/AddByteArrayDoublePairs.java
+++
b/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/delta/AddByteArrayDoublePairs.java
@@ -18,7 +18,6 @@ package org.apache.geode.redis.internal.data.delta;
import static org.apache.geode.DataSerializer.readByteArray;
import static org.apache.geode.DataSerializer.readPrimitiveDouble;
-import static org.apache.geode.internal.InternalDataSerializer.readArrayLength;
import static
org.apache.geode.redis.internal.data.delta.DeltaType.ADD_BYTE_ARRAY_DOUBLE_PAIRS;
import java.io.DataInput;
@@ -28,7 +27,6 @@ import java.util.ArrayList;
import java.util.List;
import org.apache.geode.DataSerializer;
-import org.apache.geode.internal.InternalDataSerializer;
import org.apache.geode.redis.internal.data.AbstractRedisData;
public class AddByteArrayDoublePairs extends DeltaInfo {
@@ -52,7 +50,7 @@ public class AddByteArrayDoublePairs extends DeltaInfo {
public void serializeTo(DataOutput out) throws IOException {
super.serializeTo(out);
- InternalDataSerializer.writeArrayLength(byteArrays.size(), out);
+ DataSerializer.writePrimitiveInt(byteArrays.size(), out);
for (int i = 0; i < byteArrays.size(); i++) {
DataSerializer.writeByteArray(byteArrays.get(i), out);
DataSerializer.writePrimitiveDouble(doubles[i], out);
@@ -60,7 +58,7 @@ public class AddByteArrayDoublePairs extends DeltaInfo {
}
public static void deserializeFrom(DataInput in, AbstractRedisData
redisData) throws IOException {
- int size = readArrayLength(in);
+ int size = DataSerializer.readPrimitiveInt(in);
while (size > 0) {
byte[] byteArray = readByteArray(in);
double doubleValue = readPrimitiveDouble(in);
diff --git
a/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/delta/AddByteArrayPairs.java
b/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/delta/AddByteArrayPairs.java
index ce62506..ac2329e 100644
---
a/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/delta/AddByteArrayPairs.java
+++
b/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/delta/AddByteArrayPairs.java
@@ -16,7 +16,6 @@
package org.apache.geode.redis.internal.data.delta;
import static org.apache.geode.DataSerializer.readByteArray;
-import static org.apache.geode.internal.InternalDataSerializer.readArrayLength;
import static
org.apache.geode.redis.internal.data.delta.DeltaType.ADD_BYTE_ARRAY_PAIRS;
import java.io.DataInput;
@@ -26,7 +25,6 @@ import java.util.ArrayList;
import java.util.List;
import org.apache.geode.DataSerializer;
-import org.apache.geode.internal.InternalDataSerializer;
import org.apache.geode.redis.internal.data.AbstractRedisData;
public class AddByteArrayPairs extends DeltaInfo {
@@ -53,14 +51,14 @@ public class AddByteArrayPairs extends DeltaInfo {
public void serializeTo(DataOutput out) throws IOException {
super.serializeTo(out);
- InternalDataSerializer.writeArrayLength(byteArrayPairs.size(), out);
+ DataSerializer.writePrimitiveInt(byteArrayPairs.size(), out);
for (byte[] bytes : byteArrayPairs) {
DataSerializer.writeByteArray(bytes, out);
}
}
public static void deserializeFrom(DataInput in, AbstractRedisData
redisData) throws IOException {
- int size = readArrayLength(in);
+ int size = DataSerializer.readPrimitiveInt(in);
while (size > 0) {
byte[] key = readByteArray(in);
byte[] value = readByteArray(in);
diff --git
a/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/delta/AddByteArrays.java
b/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/delta/AddByteArrays.java
index 9b8efb4..f8e5b70 100644
---
a/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/delta/AddByteArrays.java
+++
b/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/delta/AddByteArrays.java
@@ -17,7 +17,6 @@
package org.apache.geode.redis.internal.data.delta;
import static org.apache.geode.DataSerializer.readByteArray;
-import static org.apache.geode.internal.InternalDataSerializer.readArrayLength;
import static
org.apache.geode.redis.internal.data.delta.DeltaType.ADD_BYTE_ARRAYS;
import java.io.DataInput;
@@ -27,7 +26,6 @@ import java.util.ArrayList;
import java.util.List;
import org.apache.geode.DataSerializer;
-import org.apache.geode.internal.InternalDataSerializer;
import org.apache.geode.redis.internal.data.AbstractRedisData;
public class AddByteArrays extends DeltaInfo {
@@ -54,14 +52,14 @@ public class AddByteArrays extends DeltaInfo {
public void serializeTo(DataOutput out) throws IOException {
super.serializeTo(out);
- InternalDataSerializer.writeArrayLength(byteArrays.size(), out);
+ DataSerializer.writePrimitiveInt(byteArrays.size(), out);
for (byte[] bytes : byteArrays) {
DataSerializer.writeByteArray(bytes, out);
}
}
public static void deserializeFrom(DataInput in, AbstractRedisData
redisData) throws IOException {
- int size = readArrayLength(in);
+ int size = DataSerializer.readPrimitiveInt(in);
while (size > 0) {
redisData.applyAddByteArrayDelta(readByteArray(in));
size--;
diff --git
a/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/delta/AddByteArraysTail.java
b/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/delta/AddByteArraysTail.java
index 69c65f6..6e9f152 100644
---
a/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/delta/AddByteArraysTail.java
+++
b/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/delta/AddByteArraysTail.java
@@ -17,7 +17,6 @@
package org.apache.geode.redis.internal.data.delta;
import static org.apache.geode.DataSerializer.readByteArray;
-import static org.apache.geode.internal.InternalDataSerializer.readArrayLength;
import static
org.apache.geode.redis.internal.data.delta.DeltaType.ADD_BYTE_ARRAYS_TAIL;
import java.io.DataInput;
@@ -26,7 +25,6 @@ import java.io.IOException;
import java.util.List;
import org.apache.geode.DataSerializer;
-import org.apache.geode.internal.InternalDataSerializer;
import org.apache.geode.redis.internal.data.AbstractRedisData;
public class AddByteArraysTail extends DeltaInfo {
@@ -48,14 +46,14 @@ public class AddByteArraysTail extends DeltaInfo {
public void serializeTo(DataOutput out) throws IOException {
super.serializeTo(out);
- InternalDataSerializer.writeArrayLength(byteArrays.size(), out);
+ DataSerializer.writePrimitiveInt(byteArrays.size(), out);
for (byte[] bytes : byteArrays) {
DataSerializer.writeByteArray(bytes, out);
}
}
public static void deserializeFrom(DataInput in, AbstractRedisData
redisData) throws IOException {
- int size = readArrayLength(in);
+ int size = DataSerializer.readPrimitiveInt(in);
while (size > 0) {
redisData.applyAddByteArrayTailDelta(readByteArray(in));
size--;
diff --git
a/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/delta/RemoveByteArrays.java
b/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/delta/RemoveByteArrays.java
index 1e1c8dd..ad28bcf 100644
---
a/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/delta/RemoveByteArrays.java
+++
b/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/delta/RemoveByteArrays.java
@@ -17,7 +17,6 @@
package org.apache.geode.redis.internal.data.delta;
import static org.apache.geode.DataSerializer.readByteArray;
-import static org.apache.geode.internal.InternalDataSerializer.readArrayLength;
import static
org.apache.geode.redis.internal.data.delta.DeltaType.REMOVE_BYTE_ARRAYS;
import java.io.DataInput;
@@ -28,7 +27,6 @@ import java.util.List;
import org.apache.geode.DataSerializer;
import org.apache.geode.annotations.VisibleForTesting;
-import org.apache.geode.internal.InternalDataSerializer;
import org.apache.geode.redis.internal.data.AbstractRedisData;
public class RemoveByteArrays extends DeltaInfo {
@@ -53,14 +51,14 @@ public class RemoveByteArrays extends DeltaInfo {
public void serializeTo(DataOutput out) throws IOException {
super.serializeTo(out);
- InternalDataSerializer.writeArrayLength(byteArrays.size(), out);
+ DataSerializer.writePrimitiveInt(byteArrays.size(), out);
for (byte[] bytes : byteArrays) {
DataSerializer.writeByteArray(bytes, out);
}
}
public static void deserializeFrom(DataInput in, AbstractRedisData
redisData) throws IOException {
- int size = readArrayLength(in);
+ int size = DataSerializer.readPrimitiveInt(in);
while (size > 0) {
redisData.applyRemoveByteArrayDelta(readByteArray(in));
size--;
diff --git
a/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/delta/RemoveElementsByIndex.java
b/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/delta/RemoveElementsByIndex.java
index dd3eed3..a061944 100644
---
a/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/delta/RemoveElementsByIndex.java
+++
b/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/delta/RemoveElementsByIndex.java
@@ -16,7 +16,6 @@
package org.apache.geode.redis.internal.data.delta;
import static org.apache.geode.DataSerializer.readPrimitiveInt;
-import static org.apache.geode.internal.InternalDataSerializer.readArrayLength;
import static
org.apache.geode.redis.internal.data.delta.DeltaType.REMOVE_ELEMENTS_BY_INDEX;
import java.io.DataInput;
@@ -26,7 +25,6 @@ import java.util.ArrayList;
import java.util.List;
import org.apache.geode.DataSerializer;
-import org.apache.geode.internal.InternalDataSerializer;
import org.apache.geode.redis.internal.data.AbstractRedisData;
public class RemoveElementsByIndex extends DeltaInfo {
@@ -53,14 +51,14 @@ public class RemoveElementsByIndex extends DeltaInfo {
public void serializeTo(DataOutput out) throws IOException {
super.serializeTo(out);
- InternalDataSerializer.writeArrayLength(indexes.size(), out);
+ DataSerializer.writePrimitiveInt(indexes.size(), out);
for (int index : indexes) {
DataSerializer.writePrimitiveInt(index, out);
}
}
public static void deserializeFrom(DataInput in, AbstractRedisData
redisData) throws IOException {
- int size = readArrayLength(in);
+ int size = DataSerializer.readPrimitiveInt(in);
List<Integer> indexes = new ArrayList<>();
while (size > 0) {
indexes.add(readPrimitiveInt(in));
diff --git
a/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/delta/ReplaceByteArrayAtOffset.java
b/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/delta/ReplaceByteArrayAtOffset.java
index 83c588c..53a8954 100644
---
a/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/delta/ReplaceByteArrayAtOffset.java
+++
b/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/delta/ReplaceByteArrayAtOffset.java
@@ -16,7 +16,6 @@
package org.apache.geode.redis.internal.data.delta;
import static org.apache.geode.DataSerializer.readByteArray;
-import static org.apache.geode.internal.InternalDataSerializer.readArrayLength;
import static
org.apache.geode.redis.internal.data.delta.DeltaType.REPLACE_BYTE_ARRAY_AT_OFFSET;
import java.io.DataInput;
@@ -24,7 +23,6 @@ import java.io.DataOutput;
import java.io.IOException;
import org.apache.geode.DataSerializer;
-import org.apache.geode.internal.InternalDataSerializer;
import org.apache.geode.redis.internal.data.AbstractRedisData;
public class ReplaceByteArrayAtOffset extends DeltaInfo {
@@ -43,12 +41,12 @@ public class ReplaceByteArrayAtOffset extends DeltaInfo {
public void serializeTo(DataOutput out) throws IOException {
super.serializeTo(out);
- InternalDataSerializer.writeArrayLength(offset, out);
+ DataSerializer.writePrimitiveInt(offset, out);
DataSerializer.writeByteArray(byteArray, out);
}
public static void deserializeFrom(DataInput in, AbstractRedisData
redisData) throws IOException {
- int offset = readArrayLength(in);
+ int offset = DataSerializer.readPrimitiveInt(in);
byte[] byteArray = readByteArray(in);
redisData.applyReplaceByteArrayAtOffsetDelta(offset, byteArray);
}
diff --git
a/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/delta/ReplaceByteArrayDoublePairs.java
b/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/delta/ReplaceByteArrayDoublePairs.java
index 0ef5613..3b50f26 100644
---
a/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/delta/ReplaceByteArrayDoublePairs.java
+++
b/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/delta/ReplaceByteArrayDoublePairs.java
@@ -16,7 +16,6 @@ package org.apache.geode.redis.internal.data.delta;
import static org.apache.geode.DataSerializer.readByteArray;
import static org.apache.geode.DataSerializer.readPrimitiveDouble;
-import static org.apache.geode.internal.InternalDataSerializer.readArrayLength;
import static
org.apache.geode.redis.internal.data.delta.DeltaType.REPLACE_BYTE_ARRAY_DOUBLE_PAIRS;
import java.io.DataInput;
@@ -24,7 +23,6 @@ import java.io.DataOutput;
import java.io.IOException;
import org.apache.geode.DataSerializer;
-import org.apache.geode.internal.InternalDataSerializer;
import org.apache.geode.redis.internal.data.AbstractRedisData;
import org.apache.geode.redis.internal.data.RedisSortedSet;
@@ -42,7 +40,7 @@ public class ReplaceByteArrayDoublePairs extends DeltaInfo {
public void serializeTo(DataOutput out) throws IOException {
super.serializeTo(out);
- InternalDataSerializer.writeArrayLength(members.size(), out);
+ DataSerializer.writePrimitiveInt(members.size(), out);
for (byte[] member : members.keySet()) {
DataSerializer.writeByteArray(member, out);
DataSerializer.writePrimitiveDouble(members.get(member).getScore(), out);
@@ -50,7 +48,7 @@ public class ReplaceByteArrayDoublePairs extends DeltaInfo {
}
public static void deserializeFrom(DataInput in, AbstractRedisData
redisData) throws IOException {
- int size = readArrayLength(in);
+ int size = DataSerializer.readPrimitiveInt(in);
RedisSortedSet.MemberMap membersMap = new RedisSortedSet.MemberMap(size);
RedisSortedSet.ScoreSet scoreSet = new RedisSortedSet.ScoreSet();
while (size > 0) {
diff --git
a/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/delta/ReplaceByteArrays.java
b/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/delta/ReplaceByteArrays.java
index 423331b..e7ca82c 100644
---
a/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/delta/ReplaceByteArrays.java
+++
b/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/delta/ReplaceByteArrays.java
@@ -15,7 +15,6 @@
package org.apache.geode.redis.internal.data.delta;
import static org.apache.geode.DataSerializer.readByteArray;
-import static org.apache.geode.internal.InternalDataSerializer.readArrayLength;
import static
org.apache.geode.redis.internal.data.delta.DeltaType.REPLACE_BYTE_ARRAYS;
import java.io.DataInput;
@@ -24,7 +23,6 @@ import java.io.IOException;
import java.util.Set;
import org.apache.geode.DataSerializer;
-import org.apache.geode.internal.InternalDataSerializer;
import org.apache.geode.redis.internal.data.AbstractRedisData;
import org.apache.geode.redis.internal.data.RedisSet;
@@ -42,7 +40,7 @@ public class ReplaceByteArrays extends DeltaInfo {
public void serializeTo(DataOutput out) throws IOException {
super.serializeTo(out);
- InternalDataSerializer.writeArrayLength(byteArrays.size(), out);
+ DataSerializer.writePrimitiveInt(byteArrays.size(), out);
for (byte[] bytes : byteArrays) {
DataSerializer.writeByteArray(bytes, out);
}
@@ -50,7 +48,7 @@ public class ReplaceByteArrays extends DeltaInfo {
// Create a member set as you read it in
public static void deserializeFrom(DataInput in, AbstractRedisData
redisData) throws IOException {
- int size = readArrayLength(in);
+ int size = DataSerializer.readPrimitiveInt(in);
RedisSet.MemberSet members = new RedisSet.MemberSet(size);
while (size > 0) {
members.add(readByteArray(in));
diff --git
a/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/delta/ReplaceByteAtOffset.java
b/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/delta/ReplaceByteAtOffset.java
index df6089f..62093e9 100644
---
a/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/delta/ReplaceByteAtOffset.java
+++
b/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/delta/ReplaceByteAtOffset.java
@@ -16,7 +16,7 @@
package org.apache.geode.redis.internal.data.delta;
import static org.apache.geode.DataSerializer.readPrimitiveByte;
-import static org.apache.geode.internal.InternalDataSerializer.readArrayLength;
+import static org.apache.geode.DataSerializer.readPrimitiveInt;
import static
org.apache.geode.redis.internal.data.delta.DeltaType.REPLACE_BYTE_AT_OFFSET;
import java.io.DataInput;
@@ -24,7 +24,6 @@ import java.io.DataOutput;
import java.io.IOException;
import org.apache.geode.DataSerializer;
-import org.apache.geode.internal.InternalDataSerializer;
import org.apache.geode.redis.internal.data.AbstractRedisData;
public class ReplaceByteAtOffset extends DeltaInfo {
@@ -43,11 +42,11 @@ public class ReplaceByteAtOffset extends DeltaInfo {
public void serializeTo(DataOutput out) throws IOException {
super.serializeTo(out);
- InternalDataSerializer.writeArrayLength(offset, out);
+ DataSerializer.writePrimitiveInt(offset, out);
DataSerializer.writePrimitiveByte(byteValue, out);
}
public static void deserializeFrom(DataInput in, AbstractRedisData
redisData) throws IOException {
- redisData.applyReplaceByteAtOffsetDelta(readArrayLength(in),
readPrimitiveByte(in));
+ redisData.applyReplaceByteAtOffsetDelta(readPrimitiveInt(in),
readPrimitiveByte(in));
}
}
diff --git
a/geode-for-redis/src/main/java/org/apache/geode/redis/internal/pubsub/Publisher.java
b/geode-for-redis/src/main/java/org/apache/geode/redis/internal/pubsub/Publisher.java
index a9051df..a4adaee 100644
---
a/geode-for-redis/src/main/java/org/apache/geode/redis/internal/pubsub/Publisher.java
+++
b/geode-for-redis/src/main/java/org/apache/geode/redis/internal/pubsub/Publisher.java
@@ -19,6 +19,7 @@ import static java.util.Arrays.asList;
import static
org.apache.geode.internal.lang.utils.JavaWorkarounds.computeIfAbsent;
import static
org.apache.geode.logging.internal.executors.LoggingExecutors.newCachedThreadPool;
import static
org.apache.geode.redis.internal.RedisConstants.INTERNAL_SERVER_ERROR;
+import static
org.apache.geode.redis.internal.RedisConstants.PUBLISH_REQUEST_DATA_SERIALIZABLE_ID;
import static org.apache.geode.redis.internal.netty.Coder.bytesToString;
import static org.apache.geode.redis.internal.netty.Coder.getErrorResponse;
import static
org.apache.geode.redis.internal.netty.StringBytesGlossary.MESSAGE;
@@ -43,18 +44,15 @@ import io.netty.buffer.ByteBuf;
import io.netty.util.ReferenceCountUtil;
import org.apache.logging.log4j.Logger;
+import org.apache.geode.DataSerializable;
import org.apache.geode.DataSerializer;
+import org.apache.geode.Instantiator;
import org.apache.geode.annotations.VisibleForTesting;
import org.apache.geode.cache.execute.FunctionContext;
import org.apache.geode.cache.execute.FunctionService;
import org.apache.geode.cache.execute.ResultCollector;
import org.apache.geode.distributed.DistributedMember;
-import org.apache.geode.internal.InternalDataSerializer;
import org.apache.geode.internal.cache.execute.InternalFunction;
-import org.apache.geode.internal.serialization.DataSerializableFixedID;
-import org.apache.geode.internal.serialization.DeserializationContext;
-import org.apache.geode.internal.serialization.KnownVersion;
-import org.apache.geode.internal.serialization.SerializationContext;
import org.apache.geode.logging.internal.log4j.api.LogService;
import org.apache.geode.redis.internal.netty.Client;
import org.apache.geode.redis.internal.netty.Coder;
@@ -250,7 +248,17 @@ public class Publisher {
}
}
- public static class PublishRequest implements DataSerializableFixedID {
+ public static class PublishRequest implements DataSerializable {
+
+ static {
+ Instantiator
+ .register(new Instantiator(PublishRequest.class,
PUBLISH_REQUEST_DATA_SERIALIZABLE_ID) {
+ public DataSerializable newInstance() {
+ return new PublishRequest();
+ }
+ });
+ }
+
// note final can not be used because of DataSerializableFixedID
private byte[] channel;
private List<byte[]> messages;
@@ -287,24 +295,18 @@ public class Publisher {
}
@Override
- public int getDSFID() {
- return PUBLISH_REQUEST;
- }
-
- @Override
- public void toData(DataOutput out, SerializationContext context) throws
IOException {
+ public void toData(DataOutput out) throws IOException {
DataSerializer.writeByteArray(getChannel(), out);
- InternalDataSerializer.writeArrayLength(messages.size(), out);
+ DataSerializer.writePrimitiveInt(messages.size(), out);
for (byte[] message : messages) {
DataSerializer.writeByteArray(message, out);
}
}
@Override
- public void fromData(DataInput in, DeserializationContext context)
- throws IOException {
+ public void fromData(DataInput in) throws IOException {
channel = DataSerializer.readByteArray(in);
- int messageCount = InternalDataSerializer.readArrayLength(in);
+ int messageCount = DataSerializer.readPrimitiveInt(in);
messages = new ArrayList<>(messageCount);
for (int i = 0; i < messageCount; i++) {
messages.add(DataSerializer.readByteArray(in));
@@ -312,11 +314,6 @@ public class Publisher {
}
@Override
- public KnownVersion[] getSerializationVersions() {
- return null;
- }
-
- @Override
public String toString() {
return "PublishRequest{" +
"channel=" + bytesToString(channel) +
diff --git
a/geode-for-redis/src/main/java/org/apache/geode/redis/internal/services/cluster/RedisMemberInfo.java
b/geode-for-redis/src/main/java/org/apache/geode/redis/internal/services/cluster/RedisMemberInfo.java
index dcbee42..6b80ab0 100644
---
a/geode-for-redis/src/main/java/org/apache/geode/redis/internal/services/cluster/RedisMemberInfo.java
+++
b/geode-for-redis/src/main/java/org/apache/geode/redis/internal/services/cluster/RedisMemberInfo.java
@@ -15,20 +15,29 @@
package org.apache.geode.redis.internal.services.cluster;
+import static
org.apache.geode.redis.internal.RedisConstants.MEMBER_INFO_DATA_SERIALIZABLE_ID;
+
import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;
import java.io.Serializable;
import java.util.Objects;
+import org.apache.geode.DataSerializable;
import org.apache.geode.DataSerializer;
+import org.apache.geode.Instantiator;
import org.apache.geode.distributed.DistributedMember;
-import org.apache.geode.internal.serialization.DataSerializableFixedID;
-import org.apache.geode.internal.serialization.DeserializationContext;
-import org.apache.geode.internal.serialization.KnownVersion;
-import org.apache.geode.internal.serialization.SerializationContext;
-public class RedisMemberInfo implements DataSerializableFixedID, Serializable {
+public class RedisMemberInfo implements DataSerializable, Serializable {
+
+ static {
+ Instantiator
+ .register(new Instantiator(RedisMemberInfo.class,
MEMBER_INFO_DATA_SERIALIZABLE_ID) {
+ public DataSerializable newInstance() {
+ return new RedisMemberInfo();
+ }
+ });
+ }
private static final long serialVersionUID = -10228877687322470L;
@@ -37,7 +46,7 @@ public class RedisMemberInfo implements
DataSerializableFixedID, Serializable {
private int redisPort;
// For serialization
- public RedisMemberInfo() {}
+ private RedisMemberInfo() {}
public RedisMemberInfo(DistributedMember member, String hostAddress, int
redisPort) {
this.member = member;
@@ -58,31 +67,20 @@ public class RedisMemberInfo implements
DataSerializableFixedID, Serializable {
}
@Override
- public int getDSFID() {
- return REDIS_MEMBER_INFO_ID;
- }
-
- @Override
- public void toData(DataOutput out, SerializationContext context) throws
IOException {
+ public void toData(DataOutput out) throws IOException {
DataSerializer.writeObject(member, out);
DataSerializer.writeString(hostAddress, out);
out.writeInt(redisPort);
}
@Override
- public void fromData(DataInput in, DeserializationContext context)
- throws IOException, ClassNotFoundException {
+ public void fromData(DataInput in) throws IOException,
ClassNotFoundException {
member = DataSerializer.readObject(in);
hostAddress = DataSerializer.readString(in);
redisPort = DataSerializer.readPrimitiveInt(in);
}
@Override
- public KnownVersion[] getSerializationVersions() {
- return null;
- }
-
- @Override
public String toString() {
return member.toString() + " hostAddress: " + hostAddress + " redisPort: "
+ redisPort;
}
diff --git
a/geode-for-redis/src/main/resources/META-INF/services/org.apache.geode.internal.serialization.DataSerializableFixedIdRegistrant
b/geode-for-redis/src/main/resources/META-INF/services/org.apache.geode.internal.serialization.DataSerializableFixedIdRegistrant
deleted file mode 100644
index d871a4f..0000000
---
a/geode-for-redis/src/main/resources/META-INF/services/org.apache.geode.internal.serialization.DataSerializableFixedIdRegistrant
+++ /dev/null
@@ -1,16 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
contributor license
-# agreements. See the NOTICE file distributed with this work for additional
information regarding
-# copyright ownership. The ASF licenses this file to You under the Apache
License, Version 2.0 (the
-# "License"); you may not use this file except in compliance with the License.
You may obtain a
-# copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
distributed under the License
-# is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express
-# or implied. See the License for the specific language governing permissions
and limitations under
-# the License.
-#
-
-org.apache.geode.redis.internal.GeodeRedisService
diff --git
a/geode-for-redis/src/test/java/org/apache/geode/redis/internal/data/RedisHashTest.java
b/geode-for-redis/src/test/java/org/apache/geode/redis/internal/data/RedisHashTest.java
index 0d46161..3cb2400 100644
---
a/geode-for-redis/src/test/java/org/apache/geode/redis/internal/data/RedisHashTest.java
+++
b/geode-for-redis/src/test/java/org/apache/geode/redis/internal/data/RedisHashTest.java
@@ -47,7 +47,6 @@ import org.apache.geode.cache.Region;
import org.apache.geode.internal.HeapDataOutputStream;
import org.apache.geode.internal.cache.PartitionedRegion;
import org.apache.geode.internal.serialization.ByteArrayDataInput;
-import org.apache.geode.internal.serialization.SerializationContext;
import org.apache.geode.internal.size.ReflectionObjectSizer;
import org.apache.geode.internal.size.ReflectionSingleObjectSizer;
import org.apache.geode.redis.internal.commands.executor.GlobPattern;
@@ -60,8 +59,8 @@ public class RedisHashTest {
@Test
public void confirmToDataIsSynchronized() throws NoSuchMethodException {
- assertThat(Modifier.isSynchronized(RedisHash.class
- .getMethod("toData", DataOutput.class,
SerializationContext.class).getModifiers()))
+ assertThat(Modifier.isSynchronized(
+ RedisHash.class.getMethod("toData", DataOutput.class).getModifiers()))
.isTrue();
}
diff --git
a/geode-for-redis/src/test/java/org/apache/geode/redis/internal/data/RedisListTest.java
b/geode-for-redis/src/test/java/org/apache/geode/redis/internal/data/RedisListTest.java
index cb46bcc..031a180 100644
---
a/geode-for-redis/src/test/java/org/apache/geode/redis/internal/data/RedisListTest.java
+++
b/geode-for-redis/src/test/java/org/apache/geode/redis/internal/data/RedisListTest.java
@@ -36,7 +36,6 @@ import org.apache.geode.cache.Region;
import org.apache.geode.internal.HeapDataOutputStream;
import org.apache.geode.internal.cache.PartitionedRegion;
import org.apache.geode.internal.serialization.ByteArrayDataInput;
-import org.apache.geode.internal.serialization.SerializationContext;
public class RedisListTest {
@@ -57,10 +56,9 @@ public class RedisListTest {
@Test
public void confirmToDataIsSynchronized() throws NoSuchMethodException {
- assertThat(Modifier
- .isSynchronized(RedisList.class
- .getMethod("toData", DataOutput.class,
SerializationContext.class).getModifiers()))
- .isTrue();
+ assertThat(Modifier.isSynchronized(
+ RedisList.class.getMethod("toData", DataOutput.class).getModifiers()))
+ .isTrue();
}
@Test
diff --git
a/geode-for-redis/src/test/java/org/apache/geode/redis/internal/data/RedisSetTest.java
b/geode-for-redis/src/test/java/org/apache/geode/redis/internal/data/RedisSetTest.java
index 7f5c4cb..0208234 100644
---
a/geode-for-redis/src/test/java/org/apache/geode/redis/internal/data/RedisSetTest.java
+++
b/geode-for-redis/src/test/java/org/apache/geode/redis/internal/data/RedisSetTest.java
@@ -54,7 +54,6 @@ import org.apache.geode.internal.HeapDataOutputStream;
import org.apache.geode.internal.cache.PartitionedRegion;
import org.apache.geode.internal.cache.TXId;
import org.apache.geode.internal.serialization.ByteArrayDataInput;
-import org.apache.geode.internal.serialization.SerializationContext;
import org.apache.geode.internal.size.ReflectionObjectSizer;
import org.apache.geode.redis.internal.netty.Coder;
import org.apache.geode.redis.internal.services.RegionProvider;
@@ -84,10 +83,9 @@ public class RedisSetTest {
@Test
public void confirmToDataIsSynchronized() throws NoSuchMethodException {
- assertThat(Modifier
- .isSynchronized(RedisSet.class
- .getMethod("toData", DataOutput.class,
SerializationContext.class).getModifiers()))
- .isTrue();
+ assertThat(Modifier.isSynchronized(
+ RedisSet.class.getMethod("toData", DataOutput.class).getModifiers()))
+ .isTrue();
}
private RedisSet createRedisSet(int m1, int m2) {
@@ -491,7 +489,7 @@ public class RedisSetTest {
private void iterateOverSet(RedisSet set, AtomicBoolean running) throws
Exception {
while (running.get()) {
HeapDataOutputStream out = new HeapDataOutputStream(100);
- set.toData(out, null);
+ set.toData(out);
}
}
diff --git
a/geode-for-redis/src/test/java/org/apache/geode/redis/internal/data/RedisSortedSetTest.java
b/geode-for-redis/src/test/java/org/apache/geode/redis/internal/data/RedisSortedSetTest.java
index 03a68f8..ef54a98 100644
---
a/geode-for-redis/src/test/java/org/apache/geode/redis/internal/data/RedisSortedSetTest.java
+++
b/geode-for-redis/src/test/java/org/apache/geode/redis/internal/data/RedisSortedSetTest.java
@@ -61,7 +61,6 @@ import org.apache.geode.cache.Region;
import org.apache.geode.internal.HeapDataOutputStream;
import org.apache.geode.internal.cache.PartitionedRegion;
import org.apache.geode.internal.serialization.ByteArrayDataInput;
-import org.apache.geode.internal.serialization.SerializationContext;
import org.apache.geode.internal.size.ReflectionObjectSizer;
import org.apache.geode.redis.internal.commands.executor.GlobPattern;
import
org.apache.geode.redis.internal.commands.executor.sortedset.SortedSetLexRangeOptions;
@@ -88,8 +87,8 @@ public class RedisSortedSetTest {
@Test
public void confirmToDataIsSynchronized() throws NoSuchMethodException {
- assertThat(Modifier.isSynchronized(RedisSortedSet.class
- .getMethod("toData", DataOutput.class,
SerializationContext.class).getModifiers()))
+ assertThat(Modifier.isSynchronized(
+ RedisSortedSet.class.getMethod("toData",
DataOutput.class).getModifiers()))
.isTrue();
}
diff --git
a/geode-for-redis/src/test/java/org/apache/geode/redis/internal/data/RedisStringTest.java
b/geode-for-redis/src/test/java/org/apache/geode/redis/internal/data/RedisStringTest.java
index 7c13a74..29d4f05 100644
---
a/geode-for-redis/src/test/java/org/apache/geode/redis/internal/data/RedisStringTest.java
+++
b/geode-for-redis/src/test/java/org/apache/geode/redis/internal/data/RedisStringTest.java
@@ -40,7 +40,6 @@ import org.apache.geode.cache.Region;
import org.apache.geode.internal.HeapDataOutputStream;
import org.apache.geode.internal.cache.PartitionedRegion;
import org.apache.geode.internal.serialization.ByteArrayDataInput;
-import org.apache.geode.internal.serialization.SerializationContext;
import org.apache.geode.internal.size.ReflectionObjectSizer;
public class RedisStringTest {
@@ -252,10 +251,9 @@ public class RedisStringTest {
@Test
public void confirmToDataIsSynchronized() throws NoSuchMethodException {
- assertThat(Modifier
- .isSynchronized(RedisString.class
- .getMethod("toData", DataOutput.class,
SerializationContext.class).getModifiers()))
- .isTrue();
+ assertThat(Modifier.isSynchronized(
+ RedisString.class.getMethod("toData",
DataOutput.class).getModifiers()))
+ .isTrue();
}
@Test
diff --git
a/geode-serialization/src/main/java/org/apache/geode/internal/serialization/DataSerializableFixedID.java
b/geode-serialization/src/main/java/org/apache/geode/internal/serialization/DataSerializableFixedID.java
index 19e28d4..bf7ff09 100644
---
a/geode-serialization/src/main/java/org/apache/geode/internal/serialization/DataSerializableFixedID.java
+++
b/geode-serialization/src/main/java/org/apache/geode/internal/serialization/DataSerializableFixedID.java
@@ -462,9 +462,6 @@ public interface DataSerializableFixedID extends
SerializationVersions, BasicSer
short UPDATE_ENTRY_VERSION_MESSAGE = 158;
short PR_UPDATE_ENTRY_VERSION_MESSAGE = 159;
- short REDIS_KEY = 160;
- short PUBLISH_REQUEST = 161;
-
// 162 through 164 unused
short PR_FETCH_BULK_ENTRIES_MESSAGE = 165;
@@ -686,14 +683,7 @@ public interface DataSerializableFixedID extends
SerializationVersions, BasicSer
short ABORT_BACKUP_REQUEST = 2183;
short MEMBER_IDENTIFIER = 2184;
short HOST_AND_PORT = 2185;
- short REDIS_SET_ID = 2186;
- short REDIS_STRING_ID = 2187;
- short REDIS_HASH_ID = 2188;
- short REDIS_NULL_DATA_ID = 2189;
- // unused 2190;
- short REDIS_MEMBER_INFO_ID = 2191;
- short REDIS_SORTED_SET_ID = 2192;
- short REDIS_LIST_ID = 2193;
+
// NOTE, codes > 65535 will take 4 bytes to serialize
/**