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