5 months agoRevert "GEODE-9969: Fix unescaping the region name with underscore (#7282)" Revert-GEODE-9969 7311/head
Ray Ingles [Wed, 26 Jan 2022 23:20:41 +0000 (18:20 -0500)] 
Revert "GEODE-9969: Fix unescaping the region name with underscore (#7282)"

This reverts commit 4b5b30e379c35f17578251fe297c2b7fe7921fa4. Breaking

5 months agoGEODE-9973: Correct docs regarding P2P socket timeout behaviour (#7310)
Donal Evans [Wed, 26 Jan 2022 22:17:23 +0000 (14:17 -0800)] 
GEODE-9973: Correct docs regarding P2P socket timeout behaviour (#7310)

5 months agoroll develop to 1.16.0 now that support/1.15 has been created (#7309)
Owen Nichols [Wed, 26 Jan 2022 22:04:29 +0000 (14:04 -0800)] 
roll develop to 1.16.0 now that support/1.15 has been created (#7309)

5 months agoadd 1.14.3 to old versions and set as Benchmarks baseline on develop (#7307)
Dick Cavender [Wed, 26 Jan 2022 19:54:49 +0000 (11:54 -0800)] 
add 1.14.3 to old versions and set as Benchmarks baseline on develop (#7307)

5 months agoGEODE-9859: Do not copy entry if it is a destroyed entry (#7147)
Alberto Gomez [Wed, 26 Jan 2022 19:41:22 +0000 (20:41 +0100)] 
GEODE-9859: Do not copy entry if it is a destroyed entry (#7147)

* GEODE-9859: Do not copy entry if it is a destroyed entry

* GEODE-9859: Add unit test after review

5 months agoRevert "GEODE-9973: Correct docs regarding P2P socket timeout behaviour (#7294)"...
Dave Barnes [Wed, 26 Jan 2022 01:03:35 +0000 (17:03 -0800)] 
Revert "GEODE-9973: Correct docs regarding P2P socket timeout behaviour (#7294)" (#7306)

This reverts commit 763f590fe1e9a62ec21eae3a8c0cf0de2fee8594.

5 months agoGEODE-9969: Fix unescaping the region name with underscore (#7282)
Mario Kevo [Tue, 25 Jan 2022 22:58:02 +0000 (23:58 +0100)] 
GEODE-9969: Fix unescaping the region name with underscore (#7282)

* GEODE-9969: Fix unescaping the region name with underscore

5 months agoGEODE-8616: Refactoring the test to remove deprecated APIs (#7301)
Nabarun Nag [Tue, 25 Jan 2022 17:33:33 +0000 (09:33 -0800)] 
GEODE-8616: Refactoring the test to remove deprecated APIs (#7301)

        * Re-enabling the windows test.
* Refactored to remove the deprecated APIs

5 months agoGEODE-6751: Improved the tests for locator-gfsh compatibility (#7289)
Nabarun Nag [Tue, 25 Jan 2022 01:19:49 +0000 (17:19 -0800)] 
GEODE-6751: Improved the tests for locator-gfsh compatibility (#7289)

        * Previously the tests only checked with 1.3.0 version of locator
* The test now checks the behavior of the all the versions
* New version gfsh could not connect with locators versions below 1.10.0
* New version gfsh are now able to connect with locators 1.10.0 and above.
* This is now reflected in the test.
* Previously a race condition between the execution of the two scripts caused the second script to be executed before the locator startup had completed.
* Now the locator is started using the cluster startup rule.

5 months agoGEODE-9923: Add log message troubleshooting info from support team community (#7296)
Dave Barnes [Mon, 24 Jan 2022 18:40:19 +0000 (10:40 -0800)] 
GEODE-9923: Add log message troubleshooting info from support team community (#7296)

5 months agoGEODE-9958: Add gfsh-specific tests for Radish startup (#7297)
Jens Deppe [Sat, 22 Jan 2022 03:57:42 +0000 (19:57 -0800)] 
GEODE-9958: Add gfsh-specific tests for Radish startup (#7297)

5 months agoGEODE-9922: Move Redis cross-slot checking to RegionProvider (#7295)
Donal Evans [Sat, 22 Jan 2022 01:54:03 +0000 (17:54 -0800)] 
GEODE-9922: Move Redis cross-slot checking to RegionProvider (#7295)

* GEODE-9922: Move Redis cross-slot checking to RegionProvider

 - Move duplicated logic for determining if Keys are in different slots
 from various Executors to RegionProvider
 - Removed manual checks for if the key is local, as this is performed
 as part of locking the primary bucket
 - Created RedisCrossSlotException class
 - Added unit tests for new method in RegionProvider
 - Refactor SetOpExecutor to also lock the destination key for *STORE
 - Add missing test cases for cross-slot errors
 - Correct some tests for cross-slot behaviour that were inadvertantly
 testing the Jedis client's response rather than the Geode for Redis
 - Changed name format for constants in AbstractSMoveIntegrationTest
 - Modify patch file to ensure tcl tests use keys with the same slot

Authored-by: Donal Evans <>
5 months agoupdate redis svg to use new module name (#7288)
Hale Bales [Fri, 21 Jan 2022 23:31:49 +0000 (15:31 -0800)] 
update redis svg to use new module name (#7288)

5 months agoGEODE-9885: Handle duplicated appends in Redis StringsDUnitTest (#7290)
Donal Evans [Fri, 21 Jan 2022 23:28:10 +0000 (15:28 -0800)] 
GEODE-9885: Handle duplicated appends in Redis StringsDUnitTest (#7290)

* GEODE-9885: Handle duplicated appends in Redis StringsDUnitTest

 - The Jedis client automatically retries when a bucket is moved during
 an APPEND operation, which can lead to the append being duplicated. Add
 error handling to the test to check if unexpected append values are
 duplicates of the previous append and if so, ignore the AssertionError
 - Add missing synchronization around in-place array modification in
 RedisString.applyReplaceByteArrayAtOffsetDelta() method
 - Remove unnecessarily overridden method from NullRedisSet

Authored-by: Donal Evans <>
5 months agoGEODE-9973: Correct docs regarding P2P socket timeout behaviour (#7294)
Donal Evans [Fri, 21 Jan 2022 23:22:39 +0000 (15:22 -0800)] 
GEODE-9973: Correct docs regarding P2P socket timeout behaviour (#7294)

Authored-by: Donal Evans <>
5 months agoGEODE-9834: SRANDMEMBER Command Support (#7228)
Kris10 [Fri, 21 Jan 2022 18:14:07 +0000 (10:14 -0800)] 
GEODE-9834: SRANDMEMBER Command Support (#7228)

5 months agoadd 1.13.7 to old versions on develop (#7292)
Dick Cavender [Thu, 20 Jan 2022 23:51:59 +0000 (15:51 -0800)] 
add 1.13.7 to old versions on develop (#7292)

5 months agoGEODE-9837: SUNIONSTORE Command Support (#7284)
Kris10 [Thu, 20 Jan 2022 22:11:41 +0000 (14:11 -0800)] 
GEODE-9837: SUNIONSTORE Command Support (#7284)

5 months agoGEODE-9978: Remove test-container. (#7286)
Sean Goller [Thu, 20 Jan 2022 17:51:26 +0000 (09:51 -0800)] 
GEODE-9978: Remove test-container. (#7286)

5 months agoGEODE-9977: Remove defunct RedisCommandSupportLevel.INTERNAL type (#7283)
Donal Evans [Thu, 20 Jan 2022 16:53:14 +0000 (08:53 -0800)] 
GEODE-9977: Remove defunct RedisCommandSupportLevel.INTERNAL type (#7283)

Authored-by: Donal Evans <>
5 months agoUpdate codeowners mappings for kamilla1201 (#7287)
Kamilla Aslami [Thu, 20 Jan 2022 16:21:55 +0000 (08:21 -0800)] 
Update codeowners mappings for kamilla1201 (#7287)

5 months agoGEODE-9807: gfsh gateway sender stop in parallel (like start) (#7108)
Alberto Gomez [Thu, 20 Jan 2022 07:30:56 +0000 (08:30 +0100)] 
GEODE-9807: gfsh gateway sender stop in parallel (like start) (#7108)

* GEODE-9807: gfsh Gateway sender stop in parallel (like start)

* GEODE-9807: Add unit tests

* GEODE-9807: Refactor to better test after review.

* GEODE-9807: Changes after review.

* GEODE-9807: Removed delegate class to simplify as suggested by review

* GEODE-9807: Small changes after review

* GEODE-9807: stub some class under test methods instead of passing dependencies in constructor

5 months agoGEODE-9976: Edit CODEOWNERS mappings for kirklund (#7281)
Kirk Lund [Wed, 19 Jan 2022 19:20:52 +0000 (11:20 -0800)] 
GEODE-9976: Edit CODEOWNERS mappings for kirklund (#7281)

Remove kirklund as owner from several code areas.

Introduce geode-serialization/**/internal/serialization/filter/*
as a new code area with kirklund and jchen21 as owners.

5 months agoGEODE-6588: Mass cleanup of static analyzer warnings. (#7221)
Jacob Barrett [Wed, 19 Jan 2022 18:50:16 +0000 (10:50 -0800)] 
GEODE-6588: Mass cleanup of static analyzer warnings. (#7221)

5 months agoGEODE-9933: documentation for authorization expiry (#7248)
Joris Melchior [Wed, 19 Jan 2022 14:54:32 +0000 (09:54 -0500)] 
GEODE-9933: documentation for authorization expiry (#7248)

* GEODE-9933: documentation for authorization expiry

Co-authored-by: Dave Barnes <>
5 months agoGEODE-9961: GatewayReceiver rethrows CancelException (#7275)
Mario Ivanac [Wed, 19 Jan 2022 12:46:23 +0000 (13:46 +0100)] 
GEODE-9961: GatewayReceiver rethrows CancelException (#7275)

5 months agoGEODE-9971: Fix test case after switching from docker-compose to testcontainers ...
Alberto Gomez [Wed, 19 Jan 2022 07:03:52 +0000 (08:03 +0100)] 
GEODE-9971: Fix test case after switching from docker-compose to testcontainers (#7277)

5 months agoGEODE-9962: Update redis INFO command for cluster mode responses (#7273)
Jens Deppe [Wed, 19 Jan 2022 01:12:03 +0000 (17:12 -0800)] 
GEODE-9962: Update redis INFO command for cluster mode responses (#7273)

- Redis version is set to `5.0`
- InfoNativeRedisAcceptanceTest changed to use an actual Redis cluster
- Responses in cluster mode match native Redis

5 months agoGEODE-9758: Add internal serial filter API (#7217)
Kirk Lund [Tue, 18 Jan 2022 19:01:25 +0000 (11:01 -0800)] 
GEODE-9758: Add internal serial filter API (#7217)

GEODE-9758: Add internal serial filter API #7217

Expand ObjectInputStreamFilterWrapper to be an internal API which
supports all of Geode's uses of Java's ObjectInputFilter.

Introduce a new system property, geode.enableGlobalSerialFilter, to
enable a process-wide filter with all serializable Geode classes on the
classpath and the value of serializable-object-filter accept-listed.

To enable the process-wide filter with GFSH start commands, add:

* --J=-Dgeode.enableGlobalSerialFilter=true

Functional Capabilities

The internal API lives in geode-serialization and works on OpenJDK
based JREs providing a facade for Java's ObjectInputFilter in Java 8
and Java 9 or greater using reflection. The API provides the following

* creating an ObjectInputFilter
* setting an ObjectInputFilter on an ObjectInputStream
* getting an ObjectInputFilter from a ObjectInputStream
* setting a process-wide ObjectInputFilter
* getting a process-wide ObjectInputFilter

Design Notes

The API defines the following primary interface types:

* factory interfaces for creating instances of types within the API
* filter interfaces to split out single ops from Java's
* configuration interfaces for handling system properties, logging,
  and config validation

The concrete classes in the API receive parameters injected via a
constructor for any collaborators that are not specified by the
interfaces. This is intentional even when the instance is only used
once before de-referencing it. All collaborators that are defined in
the interface are passed in as parameters to the implementing
method; all others are passed in via the constructor and stored as

5 months agoGEODE-9644: Remove use of ephemeral ports for tests (#7264)
Jinmei Liao [Tue, 18 Jan 2022 17:37:48 +0000 (09:37 -0800)] 
GEODE-9644: Remove use of ephemeral ports for tests (#7264)

5 months agoGEODE-9836: SUNION Command Support
Kris10 [Tue, 18 Jan 2022 17:27:24 +0000 (09:27 -0800)] 
GEODE-9836: SUNION Command Support

5 months agoGEODE-9908: when make durable client queue primary, send marker messa… (#7267)
Jinmei Liao [Sat, 15 Jan 2022 00:08:15 +0000 (16:08 -0800)] 
GEODE-9908: when make durable client queue primary, send marker messa… (#7267)

5 months agoGEODE-9897: Improve ClientUserAuthsTest (#7263)
Dale Emery [Fri, 14 Jan 2022 23:22:02 +0000 (15:22 -0800)] 
GEODE-9897: Improve ClientUserAuthsTest (#7263)

* GEODE-9897: Improve ClientUserAuthsTest


In `ClientUserAuthsTest`, the `before()` method uses the `spy()`
mechanism to override `getNextId()` on the `ClientUserAuths` instance it
is testing. This bypasses the actual implementation for all tests,
leaving the following important `ClientUserAuths` responsibilities
- Detect when all IDs have all been used.
- Clear all existing authorizations when all IDs have been used, to
  force reauthentication.
- Re-seed the ID generator when all IDs have been used.

The tests are likely doing this because `getNextId()` relies on a
`Random`, which is uncontrollable by design. Because `ClientUserAuths`
creates the `Random`, the tests are unable to inject a testable
instance, and so instead must bypass the `ClientUserAuths` methods that
interact with the `Random`.


Some tests attempt to verify `ClientUserAuths` responsibilities only by
observing how a `ClientUserAuths` interacts with itself. These tests
verify only implementation details, and leave the actual responsibility


If the `id` passed to `ClientUserAuths.putSubject(subject, id)` is 0 or
-1, the method treats that as a request to to generate and assign an ID.
The `getNextID()` method can return either of these special values, and
so `putSubject()` might associate the subject with one of them. If a
caller later attempts to replace that subject by calling
`putSubject(replacement, id)` with the same ID (0 or -1), `putSubject()`
will generate a new ID and assign it to the replacement, rather than
replacing the original subject.


1. Extract and test a `RandomSubjectIdGenerator` that generates random
2. Change existing tests so that they do not override production
   behavior, and so that they verify actual responsibilities.
3. Update `getNextID()` to avoid returning 0 or -1.

A subsequent PR can add tests for the now-testable responsibilities.

* Add tests for handling ID exhaustion

5 months agoGEODE-9965: don't assume the release directory contains only numbered Geode releases...
Owen Nichols [Fri, 14 Jan 2022 18:00:35 +0000 (10:00 -0800)] 
GEODE-9965: don't assume the release directory contains only numbered Geode releases: ignore anything that doesn't start with a number, such as KEYS and kafka-connector-n.n.n) (#7269)

5 months agoGEODE-9936: Modify multi-key Redis commands for wrong type key (#7257)
Kris10 [Fri, 14 Jan 2022 17:38:47 +0000 (09:38 -0800)] 
GEODE-9936: Modify multi-key Redis commands for wrong type key (#7257)

 - For Redis commands that take in multiple keys, added tests with the wrong key type as an argument.
 - Modified the implementation of SDIFF, SDIFFSTORE, and ZINTERSTORE to prevent early returns allowing all keys to check for wrong key types.
 - Updated variables to match coding style.

5 months agoGEODE-9913: Added basicBridgePut condition to ensure VersionTag set (#7235)
Barry Oglesby [Fri, 14 Jan 2022 17:12:37 +0000 (09:12 -0800)] 
GEODE-9913: Added basicBridgePut condition to ensure VersionTag set (#7235)

5 months agoadd 1.12.8 to old versions on develop (#7268)
Dick Cavender [Fri, 14 Jan 2022 11:13:47 +0000 (03:13 -0800)] 
add 1.12.8 to old versions on develop (#7268)

5 months agoGEODE-9937: Add convenience methods to FileWatchingX509Extended*Manager (#7251)
Jens Deppe [Thu, 13 Jan 2022 23:15:57 +0000 (15:15 -0800)] 
GEODE-9937: Add convenience methods to FileWatchingX509Extended*Manager (#7251)

5 months agoGEODE-9944: Handle a race when HARegionQueue is not initialized yet. (#7259)
Eric Shu [Thu, 13 Jan 2022 17:52:24 +0000 (09:52 -0800)] 
GEODE-9944: Handle a race when HARegionQueue is not initialized yet. (#7259)

5 months agoGEODE-9829: Add SINTER command to Redis supported commands. (#7236)
Bala Kaza Venkata [Thu, 13 Jan 2022 16:50:20 +0000 (11:50 -0500)] 
GEODE-9829: Add SINTER command to Redis supported commands. (#7236)

SINTER command is implemented and integration tests and added to test this

Co-authored-by: Bala Kaza Venkata <>
Co-authored-by: Steve Sienkowski <>
Co-authored-by: Kristen Oduca <>
5 months agoFix for jcenter shutdown. (#7260)
Jacob Barrett [Thu, 13 Jan 2022 01:30:11 +0000 (17:30 -0800)] 
Fix for jcenter shutdown. (#7260)

5 months agoGEODE-9815: Prefer to remove a redundant copy in the same zone (#7124)
mhansonp [Tue, 11 Jan 2022 23:53:57 +0000 (15:53 -0800)] 
GEODE-9815: Prefer to remove a redundant copy in the same zone (#7124)

-Fix primaryship in tests
-Fix comments
-Remove log statements
-Remove unnecessary exceptions
-Extracting a method to make things more readable
-Changes per comments

5 months agoGEODE-9942: Include JUnit 5 tests in stress tests (#7256)
Dale Emery [Tue, 11 Jan 2022 22:58:21 +0000 (14:58 -0800)] 
GEODE-9942: Include JUnit 5 tests in stress tests (#7256)


JUnit 5 test classes need not be public. Indeed, IntelliJ's default
inspections discourage making JUnit 5 classes public.

`StressTestHelper` uses a `ClassGraph` to gather information about test
classes. By default, the `ClassGraph` scans only public classes. So by
default, the `ClassGraph` does not gather information about JUnit 5
classes with non-public visibility.

As a result, our stress test scripts do not run JUnit 5 tests.


Call `ignoreClassVisibility()` to configure the `ClassGraph` to scan all
classes, not just public ones.

A few poorly-controlled, unsophisticated experiments (on a 2016 MacBook)
show that this increases the scan duration from 3 seconds to 3.4

5 months agoGEODE-9940: ci improvements (#7255)
Owen Nichols [Tue, 11 Jan 2022 19:43:42 +0000 (11:43 -0800)] 
GEODE-9940: ci improvements (#7255)

* pin the image too for all runs in the same mass test run
* fix typo in time format from #7254

5 months agoGEODE-9881: Oplog not compacted after recovery (#7193)
Jakov Varenina [Tue, 11 Jan 2022 11:27:42 +0000 (12:27 +0100)] 
GEODE-9881: Oplog not compacted after recovery (#7193)

* GEODE-9881: Oplog not compacted after recovery

5 months agoGEODE-9735: Do not copy entries that have been updated after the comm… (#7003)
Alberto Gomez [Tue, 11 Jan 2022 07:36:09 +0000 (08:36 +0100)] 
GEODE-9735: Do not copy entries that have been updated after the comm… (#7003)

* GEODE-9735: Do not copy entries that have been updated after the command was run

* GEODE-9735: check if concurrencyChecksEnabled is true to use timestamps

5 months agoGEODE-9940: ci improvements (#7254)
Owen Nichols [Tue, 11 Jan 2022 04:33:30 +0000 (20:33 -0800)] 
GEODE-9940: ci improvements (#7254)

* fix mass test report trigger
* fix mass test report hang
* fix rc pipeline to trigger right the first time

5 months agoGEODE-9934: Move Redis MemoryOverheadIntegration test classes (#7249) 7253/head
Donal Evans [Mon, 10 Jan 2022 19:26:57 +0000 (11:26 -0800)] 
GEODE-9934: Move Redis MemoryOverheadIntegration test classes (#7249)

- Change package for AbstractMemoryOverheadIntegrationTest and child
 classes from org.apache.geode.redis.internal.commands.executor.hash to

Authored-by: Donal Evans <>
5 months agoGEODE-9869: Remove geode-for-redis properties from gfsh options (#7205)
Ray Ingles [Mon, 10 Jan 2022 18:56:47 +0000 (13:56 -0500)] 
GEODE-9869: Remove geode-for-redis properties from gfsh options (#7205)

Geode-for-Redis options are now gemfire properties. Remove the GFSH options related to geode-for-redis and update docs, examples, and tests to set such options as Java properties.

5 months agoGEODE-9832: SMOVE Command Support (#7227)
Kris10 [Mon, 10 Jan 2022 18:30:12 +0000 (10:30 -0800)] 
GEODE-9832: SMOVE Command Support (#7227)

5 months agoGEODE-6588: Cleanup static analyzer warnings.
Jacob Barrett [Fri, 7 Jan 2022 20:34:54 +0000 (12:34 -0800)] 
GEODE-6588: Cleanup static analyzer warnings.

5 months agoGEODE-7934: Use thread safe list type.
Jacob Barrett [Fri, 7 Jan 2022 19:56:48 +0000 (11:56 -0800)] 
GEODE-7934: Use thread safe list type.

5 months agoGEODE-8980: bump dependencies (#7250)
Owen Nichols [Mon, 10 Jan 2022 18:21:49 +0000 (10:21 -0800)] 
GEODE-8980: bump dependencies (#7250)

* Bump annotations from 22.0.0 to 23.0.0
* Bump assertj-core from 3.20.2 to 3.22.0
* Bump awaitility from 4.1.0 to 4.1.1
* Bump cargo from 1.9.7 to 1.9.9
* Bump classgraph from 4.8.115 to 4.8.138
* Bump fastutil from 8.5.4 to 8.5.6
* Bump geo from 0.7.7 to 0.8.0
* Bump guava from 30.1.1-jre to 31.0.1-jre
* Bump httpcore from 4.4.14 to 4.4.15
* Bump jackson-databind from 2.12.3 to 2.13.1
* Bump java-jq from 1.1.0 to 1.2.0
* Bump jetty from 9.4.43.v20210629 to 9.4.44.v20210927
* Bump jna from 5.9.0 to 5.10.0
* Bump junit-jupiter from 5.7.2 to 5.8.2
* Bump lettuce from 6.1.4.RELEASE to 6.1.5.RELEASE
* Bump micrometer from 1.7.3 to 1.8.1
* Bump mockito from 4.0.0 to 4.2.0
* Bump netty from 4.1.70.Final to 4.1.72.Final
* Bump pmd from 6.37.0 to 6.41.0
* Bump randomizedtesting-runner from 2.7.8 to 2.7.9
* Bump slf4j from 1.7.30 to 1.7.32
* Bump spring from 5.3.9 to 5.3.14
* Bump spring-boot-starter from 2.5.4 to 2.6.2
* Bump spring-hateoas from 1.3.3 to 1.4.0
* Bump spring-ldap from 2.3.2.RELEASE to 2.3.5.RELEASE
* Bump spring-security from 5.5.2 to 5.6.1
* Bump spring-session-data-redis from 2.5.2 to 2.6.1
* Bump tomcat from 9.0.50 to 9.0.56

5 months agoGEODE-9924: Avoid merging repeat test logs (#7246)
Dale Emery [Mon, 10 Jan 2022 17:53:31 +0000 (09:53 -0800)] 
GEODE-9924: Avoid merging repeat test logs (#7246)


Our repeat test tasks merge the output from all executions of a given
test class, making it very difficult to diagnose failures in repeat


In order to run tests repeatedly, our repeat test tasks override Gradle
code to allow a test class to execute more than once. Gradle's test
reporting code does not expect this. It directs the output from each
test to a log associated with the test class name, not with the specific
execution of the test class. This results in merging the outputs from
different executions of the same class.


Change Gradle to distinguish separate executions of a test class, and to
log the output from each execution separately.

- New `ExecutionTrackingTestResultProcessor` class: Wraps a given test
  result processor to append an execution identifier (a simple counter)
  to the name of the test class when reporting results. Gradle
  associates the output with this execution-specific name instead of
  with the class name.
- New `ExecutionTrackingTestClassProcessor` class: Wraps a given test
  class processor to report via an
- Change `RepeatTestExecuter` to use an

This commit also reverts GEODE-9912, which partially addressed the same
problem by adding an execution ID to each log line from a DUnit ChildVM.
The execution ID made it possible to identify the source of each merged
log line. GEODE-9924 (this commit) makes the changes from GEODE-9912

- Gradle now creates distinct XML and HTML report files for each
  execution of a given test class.
- The test summary HTML page created by Gradle lists each test class
  execution separately. If a class named `FooTest` executes 50 times (as
  in a stress test run), the summary will list `FooTest-01`,
  `FooTest-02`, ..., `FooTest-50` as if they were separate test classes.

5 months agoGEODE-9932: Change naming convention for Redish hash tags in tests (#7244)
Donal Evans [Fri, 7 Jan 2022 20:32:03 +0000 (12:32 -0800)] 
GEODE-9932: Change naming convention for Redish hash tags in tests (#7244)

 - Instead of {user1} or variants thereof, use {tag1} to prevent

Authored-by: Donal Evans <>
5 months agoGEODE-9927: Introduce geode-server-all. (#7242)
Robert Houghton [Fri, 7 Jan 2022 19:36:45 +0000 (11:36 -0800)] 
GEODE-9927: Introduce geode-server-all. (#7242)

* GEODE-9927: Introduce geode-server-all.

* replace complicated groovy logic with dependency excludes for geodeArchives
* simplify dep jars logic
* drop findbugs-annotations from bundled-jars test
* Produces same POM as geode-server-bom (which was not a strict BOM due to
having dependencies AND dependencyConstraints
* Move java API compare job to geode-server-all
* Sanitize geode-dependency and gfsh-dependency jar exclusions to reality
* Fix manifest tests that change were missed during rebase/merge

5 months agoGEODE-9930: Mark ClusterManagementOperation @Experimental (#7243)
Jacob Barrett [Fri, 7 Jan 2022 18:52:20 +0000 (10:52 -0800)] 
GEODE-9930: Mark ClusterManagementOperation @Experimental (#7243)

5 months agoGEODE-9900: ensure AuthenticationExpiredException handling (#7207)
Joris Melchior [Thu, 6 Jan 2022 15:35:21 +0000 (10:35 -0500)] 
GEODE-9900: ensure AuthenticationExpiredException handling (#7207)

* GEODE-9900: ensure AuthenticationExpiredException handling

- in CloseCQ command
- Add unit tests to confirm proper message is sent

5 months agofeature/GEODE-9902: Modify ZUNIONSTORE and ZINTERSTORE storing methods (#7219)
Kris10 [Thu, 6 Jan 2022 14:35:01 +0000 (06:35 -0800)] 
feature/GEODE-9902: Modify ZUNIONSTORE and ZINTERSTORE storing methods (#7219)

GEODE-9902: Modify ZUNIONSTORE and ZINTERSTORE storing methods

5 months agoadd 1.12.7, 1.13.6, and 1.14.2 to old versions, pare down old patch versions, and...
Owen Nichols [Wed, 5 Jan 2022 23:00:04 +0000 (15:00 -0800)] 
add 1.12.7, 1.13.6, and 1.14.2 to old versions, pare down old patch versions, and set 1.14.2 as Benchmark baseline on develop (#7203)

* add 1.12.7, 1.13.6, and 1.14.2 to old versions
* set 1.14.2 as Benchmark baseline on develop
* pare down oldversion list to only latest patch per serialization version, as per dev list discussion
* update release scripts to maintain oldversion list with only latest patch per serialization version
* fix a codewatchers typo (unrelated but was caught by this PR)

5 months agoGEODE-9691: Fix flaky ZRemDUnitTest (#7239)
Jens Deppe [Wed, 5 Jan 2022 18:39:36 +0000 (10:39 -0800)] 
GEODE-9691: Fix flaky ZRemDUnitTest (#7239)

- Adjust expectation and ensure that no ephemeral ports are used for
  restarted VMs.

5 months agoGEODE-9819: fix durable client socket leak
Darrel Schneider [Wed, 5 Jan 2022 17:19:24 +0000 (09:19 -0800)] 
GEODE-9819: fix durable client socket leak

Added unit test that reproduced the socket leak.
This involved some change to the product classes
to make them unit testable.
Fixed the leak by making sure socket.close is called
if the response code was not successful.

5 months agoGEODE-9828: support SDIFFSTORE command (#7172)
Kris10 [Tue, 4 Jan 2022 17:28:27 +0000 (09:28 -0800)] 
GEODE-9828: support SDIFFSTORE command (#7172)

5 months agoEnable tests again (#7233)
Jens Deppe [Tue, 4 Jan 2022 17:06:46 +0000 (09:06 -0800)] 
Enable tests again (#7233)

5 months agoGEODE-9911: Allow ExecutorServiceRule to name threads (#7231)
Jens Deppe [Tue, 4 Jan 2022 17:06:22 +0000 (09:06 -0800)] 
GEODE-9911: Allow ExecutorServiceRule to name threads (#7231)

- This can be used in tests to create custom named executor threads. For
  example, something like:
  public ExecutorServiceRule executor = new ExecutorServiceRule()
      .withThreadNameFunction((p, t) -> "CUSTOMNAME-pool-%d-thread-%d");

5 months agoGEODE-9912: Add unique identifier to DUnit log lines (#7232)
Jens Deppe [Tue, 4 Jan 2022 17:05:53 +0000 (09:05 -0800)] 
GEODE-9912: Add unique identifier to DUnit log lines (#7232)

5 months agoRevert "GEODE-9854: Orphaned .drf file causing memory leak (#7145)" (#7209)
Jakov Varenina [Tue, 4 Jan 2022 08:26:32 +0000 (09:26 +0100)] 
Revert "GEODE-9854: Orphaned .drf file causing memory leak (#7145)" (#7209)

For additional info please check

This reverts commit 324ed89c3d43a53466cf5aeb614b63e757ba8b23.

5 months agoGEODE-9887: Fix for deadlock during server shutdown (#7194)
Jakov Varenina [Tue, 4 Jan 2022 08:21:56 +0000 (09:21 +0100)] 
GEODE-9887: Fix for deadlock during server shutdown (#7194)

5 months agoGEODE-8644: CME will send additional UPDATE_VERSION event via serial … (#7204)
Xiaojian Zhou [Tue, 4 Jan 2022 00:08:14 +0000 (16:08 -0800)] 
GEODE-8644: CME will send additional UPDATE_VERSION event via serial … (#7204)

    co-authored-by: mhansonp <>

5 months agoincrease disk quota to hold more old versions (#7229)
Owen Nichols [Mon, 3 Jan 2022 18:54:15 +0000 (10:54 -0800)] 
increase disk quota to hold more old versions (#7229)

(cherry picked from commit 34c4a406cd45107415297fb665a92b416985455d)

5 months agoBumping copyright year to 2022 (#7226)
Owen Nichols [Sat, 1 Jan 2022 23:37:41 +0000 (15:37 -0800)] 
Bumping copyright year to 2022 (#7226)

6 months agoGEODE-9905: Bump log4j from 2.17.0 to 2.17.1 (#7225)
Owen Nichols [Thu, 30 Dec 2021 01:48:29 +0000 (17:48 -0800)] 
GEODE-9905: Bump log4j from 2.17.0 to 2.17.1 (#7225)

6 months agoGEODE-9879: Extract SystemProperty to geode-common (#7177)
Kirk Lund [Mon, 20 Dec 2021 18:53:32 +0000 (10:53 -0800)] 
GEODE-9879: Extract SystemProperty to geode-common (#7177)

Extract part of SystemPropertyHelper to geode-common for use in
modules that are upstream from geode-core.

Define new DEFAULT_PREFIX that maps to GEODE_PREFIX and use that
everywhere that GEODE_PREFIX was previously used.

* Inline prefix constants in SystemPropertyHelper
* Use static imports for system property prefixes.
* Split up large tests in SystemPropertyHelperTest.
* Fix JAXBService

6 months agoGEODE-9905: Bump log4j from 2.16.0 to 2.17.0 (#7215)
Owen Nichols [Mon, 20 Dec 2021 03:28:15 +0000 (19:28 -0800)] 
GEODE-9905: Bump log4j from 2.16.0 to 2.17.0 (#7215)

6 months agoGEODE-9716: Add extra info to error message for assert (#7188)
Ray Ingles [Fri, 17 Dec 2021 20:03:25 +0000 (15:03 -0500)] 
GEODE-9716: Add extra info to error message for assert (#7188)

Add extra info to help debug rare test failure.

6 months agoEnable LGTM as PR-gating checks (#7197)
Robert Houghton [Fri, 17 Dec 2021 03:41:58 +0000 (19:41 -0800)] 
Enable LGTM as PR-gating checks (#7197)

6 months agoGEODE-9770: Close the cache after ConflictingPersistentDataException (#7199)
Jianxia Chen [Fri, 17 Dec 2021 00:30:17 +0000 (16:30 -0800)] 
GEODE-9770: Close the cache after ConflictingPersistentDataException (#7199)

6 months agoGEODE-9810: More robust waiting for native Redis cluster to start (#7192)
Jens Deppe [Wed, 15 Dec 2021 22:10:11 +0000 (14:10 -0800)] 
GEODE-9810: More robust waiting for native Redis cluster to start (#7192)

- This fix also addresses GEODE-9428 where CLUSTERDOWN is occasionally
- The NativeRedisClusterTestRule now checks each node to make sure they
  are all reporting the correct node count instead of just one. Nodes
  are not always all ready at once.
- When processing CLUSTER INFO sometimes a 'master' reports with no
  slots which indicates it is transitioning or will become a replica.
  Originally we would mark such a node as a replica even before it had
  fully transitioned. However, this would cause problems since it then
  resulted in a too early report that the cluster was ready.

6 months agoGEODE-9850: resolve the flaky test in getting the oldest tombstone (#7198)
Xiaojian Zhou [Wed, 15 Dec 2021 21:26:02 +0000 (13:26 -0800)] 
GEODE-9850: resolve the flaky test in getting the oldest tombstone (#7198)

6 months agoGEODE-9899: Fix synchronization for RedisSet (#7201)
Jens Deppe [Wed, 15 Dec 2021 18:02:57 +0000 (10:02 -0800)] 
GEODE-9899: Fix synchronization for RedisSet (#7201)

- This adds synchronization for methods where there is interaction
  between core Geode functionality and Radish operations. Specifically
  where `toData` may be called (during GII) and regular operations that
  mutate the underlying data structure in a `RedisSet`.

6 months agoGEODE-9148: prevent expiration reschedules (#6514)
Darrel Schneider [Wed, 15 Dec 2021 00:01:49 +0000 (16:01 -0800)] 
GEODE-9148: prevent expiration reschedules (#6514)

When expiration compares timestamps it will now
add half a second to "now" to allow expiration if
we are close to the scheduled second.
This prevents an unneeded reschedule.

6 months agoadd 1.14.1, 1.13.5 and 1.12.6 to old versions and set 1.14.1 as Benchmarks baseline...
Owen Nichols [Tue, 14 Dec 2021 18:51:46 +0000 (10:51 -0800)] 
add 1.14.1, 1.13.5 and 1.12.6 to old versions and set 1.14.1 as Benchmarks baseline on develop. (#7190)

* add 1.14.1 to old versions and set as Benchmarks baseline on develop
* also add 1.13.5 and 1.12.6 to old versions
* fix tests

Co-authored-by: Jinmei Liao <>
6 months agoGEODE-9898: Bump log4j from 2.15.0 to 2.16.0 (#7200)
Owen Nichols [Tue, 14 Dec 2021 17:41:59 +0000 (09:41 -0800)] 
GEODE-9898: Bump log4j from 2.15.0 to 2.16.0 (#7200)

6 months agoGEODE-9730: release script improvements (#6989)
Owen Nichols [Sat, 11 Dec 2021 04:54:54 +0000 (20:54 -0800)] 
GEODE-9730: release script improvements (#6989)

* add fan-in for rc pipeline
* disable parallel when publishing to nexus to avoid possibility of upload getting split into two repos
* switch native build from debian to ubuntu for a (less) brittle was to get a recent-enough version of cmake (min 3.12, currently this gets 3.16)
* fix to support pinned geode sha, fix for concourse getting confused and seeing the wrong tag
* Don't imply there's anything to backport for other native branches unless this is a flagship release
* provide instructions to check for and recover from split repo
* remind that issues fixed in e.g. 1.13.1 and 1.14.1 should not be closed if 1.13.1 is released first; wait to close until latest release has fix
* maintain geode-benchmarks versionNumber, even though it doesn't seem to be used for anything
* maintain default benchmark baseline on a new flagship release
* tighten expected file sizes
* template the contents of the GitHub release description
* gpg has been split into two packages
* include a reminder to write the releasenotes while the rc pipeline is running before sending the vote email
* increase upthewaterspout timeout to 2h after observing it can take longer than 1h
* fix benchmark baseline updating and update to the minor for the support branch, unlike develop
* improve prompts for creating release on GitHub

6 months agoGEODE-9758: Move ClassUtils to geode-common (#7166)
Kirk Lund [Fri, 10 Dec 2021 19:28:17 +0000 (11:28 -0800)] 
GEODE-9758: Move ClassUtils to geode-common (#7166)

6 months agoGEODE-9888: Bump log4j from 2.14.1 to 2.15.0 (#7185)
Owen Nichols [Fri, 10 Dec 2021 19:07:12 +0000 (11:07 -0800)] 
GEODE-9888: Bump log4j from 2.14.1 to 2.15.0 (#7185)

6 months agoGEODE-9851: Use InterestType and DataPolicy over ordinal int. (#7103)
Jacob Barrett [Fri, 10 Dec 2021 05:39:08 +0000 (21:39 -0800)] 
GEODE-9851:  Use InterestType and DataPolicy over ordinal int. (#7103)

* Make InterestType an enum and use strong type in method parameters.
* Use strong type DataPolicy in method parameters.
 * Prepare for migration to enum.

6 months agoGEODE-9822: Quorum Calculation Requires Majority (#7126)
Bill Burcham [Fri, 10 Dec 2021 00:01:32 +0000 (16:01 -0800)] 
GEODE-9822: Quorum Calculation Requires Majority (#7126)

* Quorum didn't formerly require a majority—it required only 49% of the member weight.
* Because of that two member partitions could survive at once, resulting in split-brain.
* Quorum now requires a majority.

6 months agoadjust timeouts and max_in_flight for best pipeline characteristics (#7183)
Owen Nichols [Thu, 9 Dec 2021 23:11:44 +0000 (15:11 -0800)] 
adjust timeouts and max_in_flight for best pipeline characteristics (#7183)

6 months agoGEODE-9877: Use ServerSocket to create interfering port (#7180)
Jens Deppe [Thu, 9 Dec 2021 20:25:13 +0000 (12:25 -0800)] 
GEODE-9877: Use ServerSocket to create interfering port (#7180)

- For some unknown reason `startupFailsGivenPortAlreadyInUse` started to
  fail after a seemingly innocuous Ubuntu base image bump. The problem
  may also have been triggered by arbitrary test ordering changes since
  the test did not fail on its own, but only in conjunction with running
  other tests beforehand.
  Specifically, the test was failing when binding the interfering port
  (bind exception). The port used was always in the TIME_WAIT state left
  from previous tests.
  Using a `ServerSocket`, instead of a regular socket, fixes the problem
  since it actually 'uses' the port and implicitly allows for port

- Use ServerSocket consistently. Rename test to be more appropriate

6 months agoGEODE-9882: User Guide, Micrometer section, fix product_name typo (#7181)
Dave Barnes [Thu, 9 Dec 2021 18:58:53 +0000 (10:58 -0800)] 
GEODE-9882: User Guide, Micrometer section, fix product_name typo (#7181)

6 months agoGEODE-9854: Orphaned .drf file causing memory leak (#7145)
Jakov Varenina [Thu, 9 Dec 2021 18:40:25 +0000 (19:40 +0100)] 
GEODE-9854: Orphaned .drf file causing memory leak (#7145)

* GEODE-9854: Orphaned .drf file causing memory leak

An OpLog files are compacted, but the .drf file is left because it contains deletes of
entries in previous .crfs. The .crf file is deleted, but the orphaned .drf is not until all
previous .crf files (.crfs with smaller id) are deleted.

The problem is that compacted Oplog object representing orphaned .drf file holds
a structure in memory (Oplog.regionMap) that contains information that is not useful
after the compaction and it takes certain amount of memory. Besides, there is a race
condition in the code when creating .krf files that, depending on the execution order,
could make the problem more severe (it could leave pendingKrfTags structure
on the regionMap and this could take up a significant amount of memory). This
pendingKrfTags HashMap is actually empty, but consumes memory because it was used
previously and the size of the HashMap was not reduced after it is cleared.
This race condition usually happens when new Oplog is rolled out and previous Oplog
is immediately marked as eligible for compaction. Compaction and .krf creation start at
the similar time and compactor cancels creation of .krf if it is executed first.
The pendingKrfTags structure is usually cleared when .krf file is created, but since
compaction canceled creation of .krf, the pendingKrfTags structure remain in memory
until Oplog representing orphaned .drf file is deleted.

Clear the regionMap data structure of the Oplog when it is compacted (currently it is
deleted when the Oplog is destroyed).

* introduced inner static class RegionMap in Oplog
* RegionMap.get() will return always empty map if it was closed before
* When closing disk region skip adding only drf oplog to unrecovered
map and also don't try to remove it from regionMap (it was already
removed during compaction).

* Following test cases are introduced:

1. Recovery of single region after cache is closed and then recreated

2. Recovery of single region after region is closed and then recreated

Co-authored-by: Alberto Gomez <>
6 months agoGEODE-9871: Improve Radish test for network KB/s verification (#7170)
Jens Deppe [Thu, 9 Dec 2021 18:19:28 +0000 (10:19 -0800)] 
GEODE-9871: Improve Radish test for network KB/s verification (#7170)

6 months agoGEODE-9758: Move SanctionedSerializables to filter package (#7165)
Kirk Lund [Thu, 9 Dec 2021 18:15:20 +0000 (10:15 -0800)] 
GEODE-9758: Move SanctionedSerializables to filter package (#7165)

Move SanctionedSerializables to new package

6 months agoGEODE-9872: Make test framework code assign ports (#7176)
Dale Emery [Thu, 9 Dec 2021 17:53:17 +0000 (09:53 -0800)] 
GEODE-9872: Make test framework code assign ports (#7176)

* GEODE-9872: Make test framework code assign ports


`DistTXPersistentDebugDUnitTest ` failed in CI because it accidentally
connected to a locator from another test


`ClusterConfigLocatorRestartDUnitTest` attempts to restart a
locator on a port in the ephemeral port range.

Here is the sequence of events:
1. `ClusterConfigLocatorRestartDUnitTest ` started a locator on an
   ephemeral port. In this CI run it got port 37877.
2. `ClusterConfigLocatorRestartDUnitTest` stopped the locator on port
3. `DistTXPersistentDebugDUnitTest` started a locator on an ephemeral
   port. In this CI run it got 37877.
4. `ClusterConfigLocatorRestartDUnitTest ` attempted to restart the
   locator on port 37877. That port was already in use in
   `DistTXPersistentDebugDUnitTest`'s locator, and as a result the two
   tests became entangled.


`DistTXPersistentDebugDUnitTest` uses `DUnitLauncher` to start its
locator. By default, `DUnitLauncher` starts its locator on an ephemeral

`ClusterConfigLocatorRestartDUnitTest` uses `ClusterStartupRule` to
start several locators. By default, `ClusterStartupRule` starts each
locator on an ephemeral port.


Change `DUnitLauncher` and `ClusterStartupRule` to assign locator ports
via `AvailablePortHelper` if the test does not specify a particular

I considered changing only `ClusterConfigLogatorRestartDUnitTest` to
assign the port that it intends to reuse. But:
- That would fix only this one test, though an unknown number of tests
  similarly attempt to reuse ports assigned by framework code. Numerous
  of those tests have already been changed to assign ports explicitly,
  but an unknown number remain.
- It is quite reasonable for this test and others to assume that, if the
  test framework assigns a port on the test's behalf, then the test will
  enjoy exclusive use of that port for the entire life of the test. I
  think the key problem is not that tests make this assumption, but that
  the framework code violates it.

Changing the test framework classes that tacitly assign ports
(`DUnitLauncher` and `ClusterStartupRule`) makes them behave in a way
that tests expect.

* Add new port var to dunit sanctioned serializables

6 months agoGEODE-9870: Avoid Radish MOVED error during flushAll in AuthWhileServersRestartDUnitT...
Jens Deppe [Thu, 9 Dec 2021 17:13:40 +0000 (09:13 -0800)] 
GEODE-9870: Avoid Radish MOVED error during flushAll in AuthWhileServersRestartDUnitTest (#7171)

- Since servers have been stopped and restarted, as part of the test,
  buckets may be moving. Occasionally this may still be the case when
  the test is done and flushAll is cleaning up. To avoid that, make sure
  that everything is rebalanced before flushAll is called.

6 months agoGEODE-9622: Make failover test not use ephemeral port (#7178)
Dale Emery [Thu, 9 Dec 2021 16:48:11 +0000 (08:48 -0800)] 
GEODE-9622: Make failover test not use ephemeral port (#7178)


misused ephemeral ports. Some tests start a locator on an ephemeral
port, stop the locator, and attempt to restart it on the same port.

During the time the locator is stopped, the OS can assign that port to another process. When that happens, as in these failures, the test is unable to restart the locator.


Change the test to use `AvailablePortHelper` to assign an available
port, rather than requesting an ephemeral port.

6 months agoGEODE-9808: Throw appropriate exception in AutoConnectionSourceImpl (#7143)
Donal Evans [Thu, 9 Dec 2021 01:10:09 +0000 (17:10 -0800)] 
GEODE-9808: Throw appropriate exception in AutoConnectionSourceImpl (#7143)

 - Throw NoServersFoundException instead of NoLocatorsFoundException in
AutoConnectionSourceImpl if queryLocators() returns a response with no result
 - Refactor and fix up AutoConnectionSourceImplJUnitTest
 - Modify tests in AutoConnectionSourceImplJUnitTest to cover new

Authored-by: Donal Evans <>
6 months agoGEODE-9875: client operation should not send in invalid userId. (#7173)
Jinmei Liao [Thu, 9 Dec 2021 00:06:10 +0000 (16:06 -0800)] 
GEODE-9875: client operation should not send in invalid userId. (#7173)

6 months agoGEODE-9831: support SISMEMBER support command (#7164)
Kris10 [Wed, 8 Dec 2021 16:34:06 +0000 (08:34 -0800)] 
GEODE-9831: support SISMEMBER support command (#7164)

* Update geode-docs/tools_modules/