You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by ri...@apache.org on 2022/02/15 18:23:27 UTC

[geode] branch WIP-GEODE-9892 updated (b1ff4dd -> 2a3713f)

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

ringles pushed a change to branch WIP-GEODE-9892
in repository https://gitbox.apache.org/repos/asf/geode.git.


 discard b1ff4dd  MOVED fix, more transactional lpush
 discard 0844500  experimentally reduce stress
 discard 0e68d87  Yet more debug
 discard f2b4c4c  More debug
 discard 45c688e  Give cluster more time to init
 discard 1cea1ef  LPUSH failing to update list length
 discard 165e128  Give server a chance to fully join cluster
 discard d64606c  More cleanup of test code
 discard 2f6032d  clean up lpop verification logic
 discard b4852a3  update previousElement in case of skips
 discard 9f1baa3  Slow the roll on the bucket moves
 discard a134aad  no buckets
 discard f547a09  loop termination condition fix
 discard fbd06b9  list not zero at end?
 discard 701b99d  fix the loop termination condition
 discard bd91218  if the list shrinks, track it in the loop
 discard 136982f  count things but only once
 discard 23bd71b  count things
 discard c262a61  More test threshold experiment + spA
 discard 17d8100  More test threshold experiment
 discard 1f0c6e1  Test threshold experiment
 discard eb9f517  More debug
 discard 71c9b40  Handle initial difference count
 discard 83e708b  Skip validation in case of single LPOP repeat
 discard 8e463d3  Account for possible repeated LPOPS
 discard f1ac323  More debug
 discard b09987c  Use logger to get useful logs
 discard 2fc88f1  More debug for dunitrunner
 discard 39a3312  Improve assertion messages
 discard 6c42172  Fix serialization error from logging, bump test iterations back up
 discard 31b7460  Account for potentially duplicated operations
 discard c78064c  Debug updates to look for duplicate commands
 discard b15187b  Enable more logging for debug
 discard 280b940  Temporary change for CI test purposes
 discard 6047b2e  Update test condition to account for non-idempotency
 discard f71d3c6  LPush DUnit tests
 discard 8aafc50  Update LPushDUnitTest
 discard 621136e  Fix rebase error.
 discard 74e9e2b  Comment fix, rebase
 discard 026e0fc  GEODE-9892: Add initial support for RedisLists - implements LPUSH, LPOP, LLEN
     add 1da9039  GEODE-10015: Set java.rmi.server.hostname when SSL enabled. (#7337)
     add e7094ee  GEODE-9985: add region redundancy to avoid data loss. (#7308)
     add 551d7d7  GEODE-10009: Invoked internalClose with keepAlive true (#7332)
     add ce57e9f  GEODE-9980: Improve error handling of serial filters (#7299)
     add fbe4e66  GEODE-10022: fix the logging to log the entire stack trace. (#7349)
     add 8825d95  GEODE-10018: Remove redundant TX flag from SetOptions (#7352)
     add 21215d8  GEODE-9845: Refactor OutOfMemoryDUnitTest (#7338)
     add 9fa1c1b  GEODE-10021: Clean up RemoteTransactionDUnitTest (#7339)
     add a98197b  GEODE-9990: turn DiskAccessException into CacheClosedException (#7334)
     add fc3f991  GEODE-10032: Add Category to RedisCommandType (#7354)
     add 5bb3d3a  GEODE-9892: Add initial support for RedisLists - implements LPUSH, LPOP, LLEN
     new 2a3713f  Ensure lpush atomic

This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version.  This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:

 * -- * -- B -- O -- O -- O   (b1ff4dd)
            \
             N -- N -- N   refs/heads/WIP-GEODE-9892 (2a3713f)

You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.

Any revisions marked "omit" are not gone; other references still
refer to them.  Any revisions marked "discard" are gone forever.

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../src/test/resources/expected-pom.xml            |    5 +
 .../gradle/plugins/DependencyConstraints.groovy    |    1 +
 geode-core/build.gradle                            |    1 +
 .../cache/ClientServerTransactionDUnitTest.java    |  565 +++---
 .../internal/cache/RemoteTransactionDUnitTest.java | 2009 +++++++++-----------
 .../tier/sockets/SlowDispatcherDUnitTest.java      |   16 +-
 .../client/internal/QueueManagerJUnitTest.java     |   28 +-
 .../internal/cache/DiskInitFileJUnitTest.java      |   72 +
 .../filter/SerialFilterAssertions.java             |   30 +-
 .../internal/ManagementAgentIntegrationTest.java   |  161 +-
 .../client/internal/ConnectionFactoryImpl.java     |   11 +-
 .../cache/client/internal/QueueManagerImpl.java    |    2 +-
 .../apache/geode/distributed/LocatorLauncher.java  |   16 +-
 .../apache/geode/distributed/ServerLauncher.java   |   16 +-
 .../geode/internal/InternalDataSerializer.java     |   29 +-
 .../apache/geode/internal/cache/DiskInitFile.java  |   25 +-
 .../internal/cache/PRHARedundancyProvider.java     |   10 +
 .../cache/partitioned/CreateBucketMessage.java     |    5 +-
 .../cache/tier/sockets/CacheClientProxy.java       |    4 +-
 .../geode/management/internal/ManagementAgent.java |   88 +-
 .../sanctioned-geode-core-serializables.txt        |    1 -
 .../geode/distributed/LocatorLauncherTest.java     |    2 +-
 .../internal/cache/PRHARedundancyProviderTest.java |   72 +
 .../management/internal/ManagementAgentTest.java   |   60 +
 geode-for-redis/build.gradle                       |   10 +
 .../java/org/apache/geode/redis/ClusterNode.java   |    9 +
 .../apache/geode/redis/OutOfMemoryDUnitTest.java   |  408 ++--
 .../commands/executor/list/LPushDUnitTest.java     |    1 -
 .../executor/list/AbstractLPopIntegrationTest.java |   10 +-
 .../list/AbstractLPushIntegrationTest.java         |   24 +
 .../executor/server/CommandIntegrationTest.java    |   15 +-
 .../apache/geode/codeAnalysis/excludedClasses.txt  |    1 +
 .../geode/redis/internal/RedisConstants.java       |    4 +-
 .../redis/internal/commands/RedisCommandType.java  |  416 ++--
 ...ndExecutor.java => CommandCommandExecutor.java} |   16 +-
 .../executor/string/AbstractMSetExecutor.java      |   16 +-
 .../commands/executor/string/MSetExecutor.java     |    8 +-
 .../commands/executor/string/MSetNXExecutor.java   |    8 +-
 .../commands/executor/string/SetOptions.java       |   10 -
 .../geode/redis/internal/data/RedisList.java       |    7 +-
 .../geode/redis/internal/data/RedisString.java     |    9 +-
 geode-gfsh/build.gradle                            |   13 +
 .../geode/gfsh/GfshWithSslAcceptanceTest.java      |  153 ++
 .../shell/JmxOperationInvokerIntegrationTest.java  |  179 ++
 .../org/apache/geode/cache/ssl/CertStores.java     |    3 +-
 ...ationWhenFilterIsAlreadySetIntegrationTest.java |   53 +
 ...enObjectInputFilterNotFoundIntegrationTest.java |  108 ++
 ...nputFilterApiSetFilterBlankIntegrationTest.java |    1 -
 ....java => FilterAlreadyConfiguredException.java} |   22 +-
 .../serialization/filter/FilterConfiguration.java  |    2 +-
 .../serialization/filter/GlobalSerialFilter.java   |    5 +-
 .../filter/GlobalSerialFilterConfiguration.java    |   86 +-
 .../filter/JmxSerialFilterConfiguration.java       |   15 +-
 ...nputFilter.java => NullStreamSerialFilter.java} |    4 +-
 .../filter/ObjectInputFilterInvocationHandler.java |  109 ++
 .../filter/ReflectiveFacadeGlobalSerialFilter.java |   43 +-
 .../ReflectiveFacadeGlobalSerialFilterFactory.java |   20 +-
 .../ReflectiveFacadeObjectInputFilterFactory.java  |   61 -
 ...ava => ReflectiveFacadeStreamSerialFilter.java} |   49 +-
 ...ReflectiveFacadeStreamSerialFilterFactory.java} |   35 +-
 .../filter/ReflectiveObjectInputFilterApi.java     |   59 +-
 ...ectInputFilter.java => StreamSerialFilter.java} |    7 +-
 ...Factory.java => StreamSerialFilterFactory.java} |    4 +-
 ...ertyGlobalSerialFilterConfigurationFactory.java |   24 +-
 ....java => UnableToSetSerialFilterException.java} |   22 +-
 ...anctioned-geode-serialization-serializables.txt |    2 +
 .../GlobalSerialFilterConfigurationTest.java       |   84 +-
 .../JmxSerialFilterConfigurationFactoryTest.java   |    9 +
 .../filter/JmxSerialFilterConfigurationTest.java   |   50 +-
 .../filter/NullObjectInputFilterTest.java          |    4 +-
 .../ObjectInputFilterInvocationHandlerTest.java    |   97 +
 ...lectiveFacadeGlobalSerialFilterFactoryTest.java |   65 +-
 .../ReflectiveFacadeGlobalSerialFilterTest.java    |   88 +-
 ...flectiveFacadeObjectInputFilterFactoryTest.java |   12 +-
 .../ReflectiveFacadeObjectInputFilterTest.java     |   77 +-
 .../ReflectiveObjectInputFilterApiFactoryTest.java |    9 +
 .../filter/ReflectiveObjectInputFilterApiTest.java |   11 +-
 .../filter/SerialFilterAssertions.java             |   53 +-
 ...GlobalSerialFilterConfigurationFactoryTest.java |  101 +-
 ...rtyJmxSerialFilterConfigurationFactoryTest.java |   12 +-
 80 files changed, 3633 insertions(+), 2319 deletions(-)
 rename geode-core/src/{distributedTest => test}/java/org/apache/geode/distributed/LocatorLauncherTest.java (97%)
 create mode 100644 geode-core/src/test/java/org/apache/geode/management/internal/ManagementAgentTest.java
 rename geode-for-redis/src/main/java/org/apache/geode/redis/internal/commands/executor/server/{COMMANDCommandExecutor.java => CommandCommandExecutor.java} (85%)
 create mode 100644 geode-gfsh/src/acceptanceTest/java/org/apache/geode/gfsh/GfshWithSslAcceptanceTest.java
 create mode 100644 geode-gfsh/src/integrationTest/java/org/apache/geode/management/internal/cli/shell/JmxOperationInvokerIntegrationTest.java
 create mode 100644 geode-serialization/src/integrationTest/java/org/apache/geode/internal/serialization/filter/GlobalSerialFilterConfigurationWhenFilterIsAlreadySetIntegrationTest.java
 create mode 100644 geode-serialization/src/integrationTest/java/org/apache/geode/internal/serialization/filter/GlobalSerialFilterConfigurationWhenObjectInputFilterNotFoundIntegrationTest.java
 copy geode-serialization/src/main/java/org/apache/geode/internal/serialization/filter/{NullObjectInputFilter.java => FilterAlreadyConfiguredException.java} (58%)
 copy geode-serialization/src/main/java/org/apache/geode/internal/serialization/filter/{NullObjectInputFilter.java => NullStreamSerialFilter.java} (88%)
 create mode 100644 geode-serialization/src/main/java/org/apache/geode/internal/serialization/filter/ObjectInputFilterInvocationHandler.java
 delete mode 100644 geode-serialization/src/main/java/org/apache/geode/internal/serialization/filter/ReflectiveFacadeObjectInputFilterFactory.java
 rename geode-serialization/src/main/java/org/apache/geode/internal/serialization/filter/{ReflectiveFacadeObjectInputFilter.java => ReflectiveFacadeStreamSerialFilter.java} (55%)
 copy geode-serialization/src/main/java/org/apache/geode/internal/serialization/filter/{ReflectiveFacadeGlobalSerialFilterFactory.java => ReflectiveFacadeStreamSerialFilterFactory.java} (52%)
 rename geode-serialization/src/main/java/org/apache/geode/internal/serialization/filter/{ObjectInputFilter.java => StreamSerialFilter.java} (76%)
 rename geode-serialization/src/main/java/org/apache/geode/internal/serialization/filter/{ObjectInputFilterFactory.java => StreamSerialFilterFactory.java} (88%)
 rename geode-serialization/src/main/java/org/apache/geode/internal/serialization/filter/{NullObjectInputFilter.java => UnableToSetSerialFilterException.java} (60%)
 create mode 100644 geode-serialization/src/test/java/org/apache/geode/internal/serialization/filter/ObjectInputFilterInvocationHandlerTest.java
 copy {geode-core/src/integrationTest => geode-serialization/src/test}/java/org/apache/geode/internal/serialization/filter/SerialFilterAssertions.java (52%)

[geode] 01/01: Ensure lpush atomic

Posted by ri...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ringles pushed a commit to branch WIP-GEODE-9892
in repository https://gitbox.apache.org/repos/asf/geode.git

commit 2a3713f1caf6655897c720c2be0791a4e098875a
Author: Ray Ingles <ri...@vmware.com>
AuthorDate: Tue Feb 15 13:21:25 2022 -0500

    Ensure lpush atomic
---
 .../commands/executor/list/AbstractLPopIntegrationTest.java    | 10 +++++-----
 .../commands/executor/list/AbstractLPushIntegrationTest.java   | 10 ++++++++++
 .../apache/geode/redis/internal/commands/RedisCommandType.java |  3 ++-
 .../java/org/apache/geode/redis/internal/data/RedisList.java   |  7 +++----
 4 files changed, 20 insertions(+), 10 deletions(-)

diff --git a/geode-for-redis/src/integrationTest/java/org/apache/geode/redis/internal/commands/executor/list/AbstractLPopIntegrationTest.java b/geode-for-redis/src/integrationTest/java/org/apache/geode/redis/internal/commands/executor/list/AbstractLPopIntegrationTest.java
index fd7979d..3457635 100755
--- a/geode-for-redis/src/integrationTest/java/org/apache/geode/redis/internal/commands/executor/list/AbstractLPopIntegrationTest.java
+++ b/geode-for-redis/src/integrationTest/java/org/apache/geode/redis/internal/commands/executor/list/AbstractLPopIntegrationTest.java
@@ -96,8 +96,8 @@ public abstract class AbstractLPopIntegrationTest implements RedisIntegrationTes
 
   @Test
   public void lpop_withConcurrentLPush_returnsCorrectValue() {
-    String[] valuesInitial = new String[] {"one", "two", "three"};
-    String[] valuesToAdd = new String[] {"pear", "apple", "plum", "orange", "peach"};
+    String[] valuesInitial = new String[] {"un", "deux", "troix"};
+    String[] valuesToAdd = new String[] {"plum", "peach", "orange"};
     jedis.lpush(KEY, valuesInitial);
 
     final AtomicReference<String> lpopReference = new AtomicReference<>();
@@ -106,9 +106,9 @@ public abstract class AbstractLPopIntegrationTest implements RedisIntegrationTes
         i -> lpopReference.set(jedis.lpop(KEY)))
             .runWithAction(() -> {
               assertThat(lpopReference).satisfiesAnyOf(
-                  lpopResult -> assertThat(lpopReference.get()).isEqualTo("peach"),
-                  lpopResult -> assertThat(lpopReference.get()).isEqualTo("three"),
-                  lpopResult -> assertThat(lpopResult.get()).isNull());
+                  lpopResult -> assertThat(lpopReference.get()).isEqualTo("orange"),
+                  lpopResult -> assertThat(lpopReference.get()).isEqualTo("troix"),
+                  lpopResult -> assertThat(lpopReference.get()).isNull());
               jedis.del(KEY);
               jedis.lpush(KEY, valuesInitial);
             });
diff --git a/geode-for-redis/src/integrationTest/java/org/apache/geode/redis/internal/commands/executor/list/AbstractLPushIntegrationTest.java b/geode-for-redis/src/integrationTest/java/org/apache/geode/redis/internal/commands/executor/list/AbstractLPushIntegrationTest.java
index f3ecf43..25959fd 100755
--- a/geode-for-redis/src/integrationTest/java/org/apache/geode/redis/internal/commands/executor/list/AbstractLPushIntegrationTest.java
+++ b/geode-for-redis/src/integrationTest/java/org/apache/geode/redis/internal/commands/executor/list/AbstractLPushIntegrationTest.java
@@ -95,8 +95,18 @@ public abstract class AbstractLPushIntegrationTest implements RedisIntegrationTe
   @Test
   public void lpush_addsElementsInCorrectOrder_givenMultipleElements() {
     jedis.lpush(KEY, "e1", "e2", "e3");
+    jedis.lpush(KEY, "e4", "e5", "e6");
 
     String result = jedis.lpop(KEY);
+    assertThat(result).isEqualTo("e6");
+
+    result = jedis.lpop(KEY);
+    assertThat(result).isEqualTo("e5");
+
+    result = jedis.lpop(KEY);
+    assertThat(result).isEqualTo("e4");
+
+    result = jedis.lpop(KEY);
     assertThat(result).isEqualTo("e3");
 
     result = jedis.lpop(KEY);
diff --git a/geode-for-redis/src/main/java/org/apache/geode/redis/internal/commands/RedisCommandType.java b/geode-for-redis/src/main/java/org/apache/geode/redis/internal/commands/RedisCommandType.java
index e5ea743..d67a7a1 100755
--- a/geode-for-redis/src/main/java/org/apache/geode/redis/internal/commands/RedisCommandType.java
+++ b/geode-for-redis/src/main/java/org/apache/geode/redis/internal/commands/RedisCommandType.java
@@ -382,7 +382,8 @@ public enum RedisCommandType {
 
   LLEN(new LLenExecutor(), Category.LIST, SUPPORTED, new Parameter().exact(2).flags(READONLY, FAST)),
   LPOP(new LPopExecutor(), Category.LIST, SUPPORTED, new Parameter().exact(2).flags(WRITE, FAST)),
-  LPUSH(new LPushExecutor(), Category.LIST, SUPPORTED, new Parameter().min(3).flags(WRITE, DENYOOM, FAST)),
+  LPUSH(new LPushExecutor(), Category.LIST, SUPPORTED,
+      new Parameter().min(3).flags(WRITE, DENYOOM, FAST)),
 
   /********** Publish Subscribe **********/
 
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 61f9b79..02928d0 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
@@ -49,9 +49,6 @@ public class RedisList extends AbstractRedisData {
    * @return the number of elements actually added
    */
   public long lpush(List<byte[]> elementsToAdd, Region<RedisKey, RedisData> region, RedisKey key) {
-    // for (byte[] element : elementsToAdd) {
-    // elementPush(element);
-    // }
     elementsPush(elementsToAdd);
     storeChanges(region, key, new AddByteArrays(elementsToAdd));
     return elementList.size();
@@ -133,7 +130,9 @@ public class RedisList extends AbstractRedisData {
   }
 
   public synchronized void elementsPush(List<byte[]> elementsToAdd) {
-    elementList.addAll(0, elementsToAdd);
+    for (byte[] element : elementsToAdd) {
+      elementPush(element);
+    }
   }
 
   @Override