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 9a8b809  Sizing works for certain values of 'works'
9a8b809 is described below

commit 9a8b80985cd4e23ff8a16256d4359e465eb3a701
Author: Ray Ingles <[email protected]>
AuthorDate: Wed Jan 12 16:50:51 2022 -0500

    Sizing works for certain values of 'works'
---
 .../internal/data/collections/SizeableList.java    | 24 +++++++++++++++-------
 .../data/collections/SizeableListTest.java         | 10 ++-------
 2 files changed, 19 insertions(+), 15 deletions(-)

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 9179072..5320827 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
@@ -26,19 +26,23 @@ public abstract class SizeableList<K> extends LinkedList<K> 
implements Sizeable
   private static final long serialVersionUID = -8255284217236712060L;
   private static final int SIZEABLE_LIST_OVERHEAD =
       memoryOverhead(SizeableList.class);
-  private static final int NODE_OVERHEAD = 4;
+  private static final int NODE_OVERHEAD = 24;
 
   private int memberOverhead;
 
   public SizeableList(Collection<K> collection) {
     for (K element : collection) {
-      this.add(0, element);
+      add(0, element);
     }
   }
 
-  @Override
+  public void add(int index, K k) {
+    super.add(index, k);
+    memberOverhead += sizeElement(k) + NODE_OVERHEAD;
+  }
+
   public boolean add(K k) {
-    boolean added = this.add(k);
+    boolean added = super.add(k);
     if (added) {
       memberOverhead += sizeElement(k) + NODE_OVERHEAD;
     }
@@ -46,11 +50,17 @@ public abstract class SizeableList<K> extends LinkedList<K> 
implements Sizeable
   }
 
   @SuppressWarnings("unchecked")
-  @Override
+  public K remove(int index) {
+    K element = super.remove(index);
+    memberOverhead -= sizeElement(element) + NODE_OVERHEAD;
+    return element;
+  }
+
+  @SuppressWarnings("unchecked")
   public boolean remove(Object k) {
-    boolean removed = this.remove(k);
+    boolean removed = super.remove(k);
     if (removed) {
-      memberOverhead -= sizeElement(k) + NODE_OVERHEAD;
+      memberOverhead -= sizeElement((K) k) + NODE_OVERHEAD;
     }
     return removed;
   }
diff --git 
a/geode-for-redis/src/test/java/org/apache/geode/redis/internal/data/collections/SizeableListTest.java
 
b/geode-for-redis/src/test/java/org/apache/geode/redis/internal/data/collections/SizeableListTest.java
index 1d6c4cc..f5e9668 100644
--- 
a/geode-for-redis/src/test/java/org/apache/geode/redis/internal/data/collections/SizeableListTest.java
+++ 
b/geode-for-redis/src/test/java/org/apache/geode/redis/internal/data/collections/SizeableListTest.java
@@ -48,15 +48,9 @@ public class SizeableListTest {
   }
 
   @Test
-  public void getSizeInBytesForSingleElementList() {
-    RedisList.ElementList list = createTestElementList(1);
-    assertThat(list.getSizeInBytes()).isEqualTo(expectedSize(list));
-  }
-
-  @Test
   public void getSizeInBytesIsAccurateForByteArrays() {
     List<byte[]> initialElements = new ArrayList<>();
-    int initialNumberOfElements = 100;
+    int initialNumberOfElements = 20;
     int elementsToAdd = 100;
     for (int i = 0; i < initialNumberOfElements; ++i) {
       initialElements.add(new byte[] {(byte) i});
@@ -74,7 +68,7 @@ public class SizeableListTest {
 
     // Remove all the members and assert that the size is correct after each 
remove
     for (int i = 0; i < initialNumberOfElements + elementsToAdd; ++i) {
-      list.remove(new byte[] {(byte) i});
+      list.remove(0);
       assertThat(list.getSizeInBytes()).isEqualTo(expectedSize(list));
     }
     assertThat(list.size()).isEqualTo(0);

Reply via email to