This is an automated email from the ASF dual-hosted git repository.

ringles pushed a commit to branch 
GEODE-9892-Create-Infrastructure-for-Redis-Lists
in repository https://gitbox.apache.org/repos/asf/geode.git


The following commit(s) were added to 
refs/heads/GEODE-9892-Create-Infrastructure-for-Redis-Lists by this push:
     new 7881f3e  Tests passing
7881f3e is described below

commit 7881f3efecdb0e0ebd7d19168dc88116e9729b11
Author: Ray Ingles <[email protected]>
AuthorDate: Tue Jan 11 15:18:31 2022 -0500

    Tests passing
---
 .../commands/executor/list/LPushExecutor.java      |  2 +-
 .../geode/redis/internal/data/NullRedisList.java   |  3 ++-
 .../geode/redis/internal/data/RedisList.java       | 22 ++++++++--------------
 .../internal/data/collections/SizeableList.java    | 16 +++++-----------
 .../serialization/DataSerializableFixedID.java     |  3 ++-
 5 files changed, 18 insertions(+), 28 deletions(-)

diff --git 
a/geode-for-redis/src/main/java/org/apache/geode/redis/internal/commands/executor/list/LPushExecutor.java
 
b/geode-for-redis/src/main/java/org/apache/geode/redis/internal/commands/executor/list/LPushExecutor.java
index 2449c2b..efa5085 100755
--- 
a/geode-for-redis/src/main/java/org/apache/geode/redis/internal/commands/executor/list/LPushExecutor.java
+++ 
b/geode-for-redis/src/main/java/org/apache/geode/redis/internal/commands/executor/list/LPushExecutor.java
@@ -33,7 +33,7 @@ public class LPushExecutor implements CommandExecutor {
     Region<RedisKey, RedisData> region = context.getRegion();
     RedisKey key = command.getKey();
 
-    List<byte[]> elementsToAdd = new ArrayList<>(commandElements.subList(2, 
commandElements.size()));
+    List<byte[]> elementsToAdd = commandElements.subList(2, 
commandElements.size());
 
     long entriesAdded = context.listLockedExecute(key, false,
         list -> list.lpush(elementsToAdd, region, key));
diff --git 
a/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/NullRedisList.java
 
b/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/NullRedisList.java
index 699e0e0..2637fbf 100644
--- 
a/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/NullRedisList.java
+++ 
b/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/NullRedisList.java
@@ -34,7 +34,8 @@ class NullRedisList extends RedisList {
 
   @Override
   public long lpush(List<byte[]> elementsToAdd, Region<RedisKey, RedisData> 
region, RedisKey key) {
-    region.create(key, new RedisList(elementsToAdd));
+    RedisList newList = new RedisList(elementsToAdd);
+    region.create(key, newList);
     return elementsToAdd.size();
   }
 
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 5da9685..3338ae7 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
@@ -16,7 +16,6 @@
 
 package org.apache.geode.redis.internal.data;
 
-import static java.util.Collections.emptyList;
 import static org.apache.geode.internal.JvmSizeUtils.memoryOverhead;
 import static org.apache.geode.redis.internal.data.RedisDataType.REDIS_LIST;
 
@@ -24,7 +23,7 @@ import java.io.DataInput;
 import java.io.DataOutput;
 import java.io.IOException;
 import java.util.Collection;
-import java.util.LinkedList;
+import java.util.Collections;
 import java.util.List;
 import java.util.Objects;
 
@@ -40,7 +39,6 @@ import 
org.apache.geode.redis.internal.data.delta.RemoveByteArrays;
 
 public class RedisList extends AbstractRedisData {
   protected static final int REDIS_LIST_OVERHEAD = 
memoryOverhead(RedisList.class);
-
   private ElementList elements;
 
   public RedisList(Collection<byte[]> collection) {
@@ -100,12 +98,12 @@ public class RedisList extends AbstractRedisData {
 
   @Override
   public void applyAddByteArrayDelta(byte[] bytes) {
-    appendElement(bytes);
+    prependElement(bytes);
   }
 
   @Override
   public void applyRemoveByteArrayDelta(byte[] bytes) {
-    membersRemove(bytes);
+    elementRemove(bytes);
   }
 
   /**
@@ -128,7 +126,7 @@ public class RedisList extends AbstractRedisData {
       throws IOException, ClassNotFoundException {
     super.fromData(in, context);
     int size = DataSerializer.readPrimitiveInt(in);
-    elements = new ElementList(size);
+    elements = new ElementList(Collections.emptyList()); //TODO: zero arg 
constructor!!
     for (int i = 0; i < size; ++i) {
       elements.add(DataSerializer.readByteArray(in));
     }
@@ -151,7 +149,7 @@ public class RedisList extends AbstractRedisData {
   }
 
   @VisibleForTesting
-  synchronized boolean membersRemove(byte[] memberToRemove) {
+  synchronized boolean elementRemove(byte[] memberToRemove) {
     return elements.remove(memberToRemove);
   }
 
@@ -176,13 +174,13 @@ public class RedisList extends AbstractRedisData {
     if (!super.equals(o)) {
       return false;
     }
-    RedisList redisSet = (RedisList) o;
+    RedisList redisList = (RedisList) o;
 
-    if (redisSet.elements.size() != elements.size()) {
+    if (redisList.elements.size() != elements.size()) {
       return false;
     }
     for (byte[] element : elements) {
-      if (!redisSet.elements.contains(element)) {
+      if (!redisList.elements.contains(element)) {
         return false;
       }
     }
@@ -214,10 +212,6 @@ public class RedisList extends AbstractRedisData {
       super(initialElements);
     }
 
-    public ElementList(int size) {
-      super(size);
-    }
-
     @Override
     protected int sizeElement(byte[] element) {
       return memoryOverhead(element);
diff --git 
a/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/collections/SizeableList.java
 
b/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/collections/SizeableList.java
index 7249f5e..1747413 100644
--- 
a/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/collections/SizeableList.java
+++ 
b/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/collections/SizeableList.java
@@ -30,23 +30,17 @@ public abstract class SizeableList<K> extends LinkedList<K> 
implements Sizeable
       memoryOverhead(SizeableList.class);
 
   private int memberOverhead;
-  private List<K> elements;
 
   public SizeableList(Collection<K> collection) {
-    elements = new ArrayList<>(collection.size());
-    for (K element: collection) {
-      add(element);
+    for(K element: collection) {
+      this.add(0, element);
     }
-  }
-
-
-  public SizeableList(int size) {
-    elements = new LinkedList<>();
+//   super(collection);
   }
 
   @Override
   public boolean add(K k) {
-    boolean added = elements.add(k);
+    boolean added = this.add(k);
     if (added) {
       memberOverhead += sizeElement(k) + 4; // TODO: Figure out sizing.
     }
@@ -56,7 +50,7 @@ public abstract class SizeableList<K> extends LinkedList<K> 
implements Sizeable
   @SuppressWarnings("unchecked")
   @Override
   public boolean remove(Object k) {
-    boolean removed = elements.remove(k);
+    boolean removed = this.remove(k);
     if (removed) {
       memberOverhead -= sizeElement((K) k);
     }
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 2e29996..19e28d4 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
@@ -690,9 +690,10 @@ public interface DataSerializableFixedID extends 
SerializationVersions, BasicSer
   short REDIS_STRING_ID = 2187;
   short REDIS_HASH_ID = 2188;
   short REDIS_NULL_DATA_ID = 2189;
-  short REDIS_LIST_ID = 2190;
+  // 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
 
   /**

Reply via email to