geode.git
8 weeks agoGEODE-10279: Need to lock RVV and flush before backup feature/GEODE-10279 7661/head
zhouxh [Thu, 5 May 2022 00:03:49 +0000 (17:03 -0700)] 
GEODE-10279: Need to lock RVV and flush before backup

2 months agoBugfix/GEODE-10228 DurableClientTestCase.testDurableHAFailover is failing (#7608)
mhansonp [Thu, 28 Apr 2022 22:10:24 +0000 (15:10 -0700)] 
Bugfix/GEODE-10228 DurableClientTestCase.testDurableHAFailover is failing (#7608)

- The test was failing because it didn't wait for the
HARegionQueue to clear before shutting down the durable
client for test. Thus when it came back up, there was
an extra message in the queue.

- Reverse the order of readyforevents and registerinterest

- adding a close for the control listener

- Starting the server is not synchronous adjusted test accordingly

2 months agoGEODE-10260: refactor out Filter interface to use Predicate (#7627)
Jinmei Liao [Thu, 28 Apr 2022 19:08:42 +0000 (12:08 -0700)] 
GEODE-10260: refactor out Filter interface to use Predicate (#7627)

2 months agoGEODE-10260: make sure message is added before they are processed. (#7628)
Jinmei Liao [Thu, 28 Apr 2022 18:58:49 +0000 (11:58 -0700)] 
GEODE-10260: make sure message is added before they are processed. (#7628)

2 months agoGEODE-10263: add opens required by geode features (#7632)
Darrel Schneider [Thu, 28 Apr 2022 16:21:04 +0000 (09:21 -0700)] 
GEODE-10263: add opens required by geode features (#7632)

added opens required by geode features and added javadoc comments
that link to the class in geode that requires an open or export

2 months agoGEODE-10184: Verify the status file is accessible before handling the request. (...
Patrick Johnson [Wed, 27 Apr 2022 20:23:07 +0000 (13:23 -0700)] 
GEODE-10184: Verify the status file is accessible before handling the request. (#7582)

2 months agoGEODE-10020: Introduction of option to gradually activate pinging (#7517)
Mario Ivanac [Wed, 27 Apr 2022 20:02:44 +0000 (22:02 +0200)] 
GEODE-10020: Introduction of option to gradually activate pinging (#7517)

* GEODE-10020: Introduction of option to gradually activate pinging toward destination

2 months agoGEODE-10258: Assert at least 1 invocation (#7624)
Donal Evans [Wed, 27 Apr 2022 18:19:23 +0000 (11:19 -0700)] 
GEODE-10258: Assert at least 1 invocation (#7624)

ClearDuringNetSearchOplogRegressionTest uses an await statement to
allow the timing of a region clear to be correct. An invocation of
CacheObserver.afterSettingDiskRef() is used as the trigger for the
await to pass and allow the clear to begin.

The test was failing due to CacheObserver.afterSettingDiskRef() being
invoked more than once in the await statement, but this method is
expected to be invoked multiple times during the test, so occasionally
the await would check and find 0 invocations,then check again and find
2 or more, causing the test to fail.

Replacing the times(1) in the assertion with atLeast(1) allows the test
to pass while preserving the intended behaviour of the await.

Some incidental code clean-up was also done in the test to remove
compiler warnings.

Authored-by: Donal Evans <doevans@vmware.com>
2 months agoGEODE-10248: Adding a new Suspicious Strings exception (#7612)
mhansonp [Tue, 26 Apr 2022 16:33:05 +0000 (09:33 -0700)] 
GEODE-10248: Adding a new Suspicious Strings exception (#7612)

for Management Requests that get logged and a test

2 months agoGEODE-10249: Adds BufferPoolMXBean stats. (#7607)
Jacob Barrett [Mon, 25 Apr 2022 19:54:01 +0000 (12:54 -0700)] 
GEODE-10249: Adds BufferPoolMXBean stats. (#7607)

* Adds new class for BufferPoolMXBean.
* Adds tests for BufferPoolStats.
* Cleanup VMStats50.

2 months agoGEODE-10209: Use AvailablePortHelper in InternalCacheForClientAccessDistributedTest...
Kirk Lund [Mon, 25 Apr 2022 17:16:21 +0000 (10:16 -0700)] 
GEODE-10209: Use AvailablePortHelper in InternalCacheForClientAccessDistributedTest (#7613)

Prevent BindException by using AvailablePortHelper.

2 months agoGEODE-10254: Use original hostname if host is null. (#7618)
Jacob Barrett [Mon, 25 Apr 2022 16:53:10 +0000 (09:53 -0700)] 
GEODE-10254: Use original hostname if host is null. (#7618)

If original hostname was not resolvable then host is null. Use hostname
if host is null when marshaling.

2 months agoGEODE-9466: change offheap to not use Bits.unaligned (#7611)
Darrel Schneider [Thu, 21 Apr 2022 21:53:13 +0000 (14:53 -0700)] 
GEODE-9466: change offheap to not use Bits.unaligned (#7611)

offheap no longer depends on java.nio.Bits.unaligned

2 months agoGEODE-10243: Fail early if old client auth expires (#7603)
Jinmei Liao [Thu, 21 Apr 2022 19:24:39 +0000 (12:24 -0700)] 
GEODE-10243: Fail early if old client auth expires (#7603)

* change the default "waitForReAuth" time to 60 seconds

2 months agoGEODE-10229: GII image should fill disk region RVV's exceptions. (#7602)
Xiaojian Zhou [Wed, 20 Apr 2022 21:35:54 +0000 (14:35 -0700)] 
GEODE-10229: GII image should fill disk region RVV's exceptions. (#7602)

* GEODE-10229: GII image should fill disk region RVV's exceptions.
    There're 2 issues: Tombstone in GII image should save version tag into disk region RVV
    even the tombstone is the same as local one. Disk region RVV holder did not use bitset.
    Only bitset based holder can fill special exception. Should do it for non-bitset holder too.

2 months agoGEODE-10245: Upgrade classgraph 4.8.143 -> 4.8.145 (#7605)
Jens Deppe [Wed, 20 Apr 2022 16:37:33 +0000 (09:37 -0700)] 
GEODE-10245: Upgrade classgraph 4.8.143 -> 4.8.145 (#7605)

- This fixes an issue discovered with the ordering of 'manifest only'
  jars and classgraph unable to find classes.

2 months agoGEODE-10251: Make DescribedExternalResource report all exceptions (#7609)
Dale Emery [Wed, 20 Apr 2022 15:59:23 +0000 (08:59 -0700)] 
GEODE-10251: Make DescribedExternalResource report all exceptions (#7609)

* GEODE-10251: Make DescribedExternalResource report all exceptions

Co-authored-by: Dale Emery <demery@vmware.com>
Co-authored-by: Kirk Lund <klund@apache.org>
* Fix test name

Co-authored-by: Dale Emery <demery@vmware.com>
Co-authored-by: Kirk Lund <klund@apache.org>
* Spotless

Co-authored-by: Dale Emery <demery@vmware.com>
Co-authored-by: Kirk Lund <klund@apache.org>
Co-authored-by: Kirk Lund <klund@apache.org>
2 months agoGEODE-10246: fix OutOfMemoryDUnitTest for jdk17 (#7606)
Darrel Schneider [Wed, 20 Apr 2022 02:26:02 +0000 (19:26 -0700)] 
GEODE-10246: fix OutOfMemoryDUnitTest for jdk17 (#7606)

* test now uses ZGC  on jdk17
* product change: added ZHeap to the list of known memoryPoolMXBeans

2 months agoGEODE-10161: Remove unnecessary synchronization from RedisList (#7579)
Jens Deppe [Tue, 19 Apr 2022 17:52:36 +0000 (10:52 -0700)] 
GEODE-10161: Remove unnecessary synchronization from RedisList (#7579)

- Now, with the addition of versioning and synchronization at the
  higher-level methods, all the synchronization can be removed from the
  small, helper methods we have.
- We still need to ensure that there is synchronization between toData
  and within methods that are mutating the list.
- Inline various helper methods in RedisList as they are not adding any
  value.
- Use AvailablePortHelper to set up the port that the crashing VM will
  use. Without this there is interference from other tests when running
  multiple tests concurrently (in the stressTest job).
- Ran at least 1000 iterations of all list-related DUnit tests without
  any failures.

2 months agoGEODE-10023: do not @link to type params (#7601)
Donal Evans [Mon, 18 Apr 2022 16:19:43 +0000 (09:19 -0700)] 
GEODE-10023: do not @link to type params (#7601)

Some javadocs contained @link tags pointing to type parameters. These
should have been @code tags, as type parameters cannot be linked to

Authored-by: Donal Evans <doevans@vmware.com>
2 months agoGEODE-10197: fix test for jdk17
Darrel Schneider [Sat, 16 Apr 2022 06:41:32 +0000 (23:41 -0700)] 
GEODE-10197: fix test for jdk17

OutOfMemoryDUnitTest now only uses CMS on jdk less than 14. (#7595)

2 months agoGEODE-10023: Fix javadocs (#7594)
Donal Evans [Sat, 16 Apr 2022 04:10:17 +0000 (21:10 -0700)] 
GEODE-10023: Fix javadocs (#7594)

This commit reduces the number of errors reported in the gradle build
log due to javadocs from over 3000 to 0. It also reduces the number of
warnings reported in the gradle build log due to javadocs from over
4000 to 0.

After these changes, all published javadocs are now syntactically
correct, although no guarantee is made as to the content of the
documentation. Javadocs in classes that did not produce warnings or
errors in the gradle build log were not touched.

For classes in the geode-dunit, geode-junit, geode-assembly and
geode-concurrency-test modules, if a javadoc could be converted to
a non-javadoc comment without losing any formatting or tags, it was
converted, since those classes are not intended for use by Geode users

The changes made were:
 - Add missing @return, @param and @throws tags
 - Fix all errors due to incorrect HTML
 - Fix all errors due to improperly escaped characters
 - Fix all broken @link tags
 - Several minor spelling errors and typos fixed where spotted

In addition to this clean-up, the compiler settings were modified so
that javadocs warnings and errors will be output in the gradle build
log, and if any are present, the build will fail.

Authored-by: Donal Evans <doevans@vmware.com>
Co-authored-by: Patrick Johnson <jpatrick@vmware.com>
2 months agoGEODE-10238: add open for jetty9 on java 17 (#7593)
Darrel Schneider [Fri, 15 Apr 2022 16:35:41 +0000 (09:35 -0700)] 
GEODE-10238: add open for jetty9 on java 17 (#7593)

* added open for sun.security.provider for jetty9

* test now expects stack to contain "Connection refused" instead of "Connection refused "

2 months agoGEODE-10223: Fix BlockingCommandListnerTest to be less flaky. (#7592)
Bala Kaza Venkata [Fri, 15 Apr 2022 14:49:32 +0000 (10:49 -0400)] 
GEODE-10223: Fix BlockingCommandListnerTest to be less flaky. (#7592)

* GEODE-10223: Fix BlockingCommandListnerTest to be less flaky.

testTimeoutIsAdjusted is flaky on windows machines. Adding a delay will make it less flaky.

Authored-by: Bala Kaza Venkata <bkazavenkata@vmware.com>
2 months agoGEODE-10185: fix MemoryOverheadIntegrationTest for jdk17 (#7591)
Darrel Schneider [Fri, 15 Apr 2022 03:46:03 +0000 (20:46 -0700)] 
GEODE-10185: fix MemoryOverheadIntegrationTest for jdk17 (#7591)

* If ObjectTraverser has been told to skip static fields
then it will no longer attempt to make static fields accessible.
* cleaned up ObjectTraverser class
* added unit test that verifies static fields will not be cached if they are not visited
removed statics from ObjectTraverser to aid unit testing
cleaned up warnings in ObjectGraphSizer and ObjectTraverser

2 months agoGEODE-10035: fix BufferPool sys prop logic (#7587)
Darrel Schneider [Thu, 14 Apr 2022 19:27:45 +0000 (12:27 -0700)] 
GEODE-10035: fix BufferPool sys prop logic (#7587)

Now if either system property is set to true that takes precedence
and heap buffers will be used. Otherwise, direct buffers will be used.

2 months agoRevert "Revert "GEODE-10126: Replace Geode for Redis properties with system propertie...
Jens Deppe [Thu, 14 Apr 2022 18:41:17 +0000 (11:41 -0700)] 
Revert "Revert "GEODE-10126: Replace Geode for Redis properties with system properties (#7478)" (#7576)" (#7586)

This reverts commit 934f517e92854cbfeb09d46f8ed9de806ef3eccb.

2 months agoGEODE-9759: replaces double-hyphens with &#8209;&#8209; (#7560)
Max Hufnagel [Thu, 14 Apr 2022 18:24:47 +0000 (11:24 -0700)] 
GEODE-9759: replaces double-hyphens with &#8209;&#8209; (#7560)

* GEODE-9759: replaces double-hypens with &#8209;&#8209;

Co-authored-by: Max Hufnagel <mhufnagel@vmware.com>
2 months agoGEODE-8228: Use assertThat without embedded comparisons.
Jacob Barrett [Tue, 12 Apr 2022 16:46:10 +0000 (09:46 -0700)] 
GEODE-8228: Use assertThat without embedded comparisons.

2 months agoGEODE-8228: Rename tests to current convention.
Jacob Barrett [Sat, 9 Apr 2022 17:27:20 +0000 (10:27 -0700)] 
GEODE-8228: Rename tests to current convention.

2 months agoGEODE-8228: Await on stats.
Jacob Barrett [Fri, 8 Apr 2022 21:50:11 +0000 (14:50 -0700)] 
GEODE-8228: Await on stats.

2 months agoGEODE-8228: Cleanup static analyzer in WANTestBase.
Jacob Barrett [Fri, 8 Apr 2022 06:28:31 +0000 (23:28 -0700)] 
GEODE-8228: Cleanup static analyzer in WANTestBase.

2 months agoGEODE-8228: Refactored to AssertJ.
Jacob Barrett [Fri, 8 Apr 2022 04:46:07 +0000 (21:46 -0700)] 
GEODE-8228: Refactored to AssertJ.

2 months agoGEODE-10235: fix --maxHeap for java 17 (#7585)
Darrel Schneider [Wed, 13 Apr 2022 19:24:29 +0000 (12:24 -0700)] 
GEODE-10235: fix --maxHeap for java 17 (#7585)

* --maxHeap no longer forces CMS if the java version is 14 or later. It was in 14 that CMS was dropped from the JVM.

* product code now uses SystemUtils to determine java version instead of system property
tests now use junit5 EnabledForJreRange to determine java version instead of system property
fixed some other tests that were broken in jdk17 by this change

2 months agoGEODE-10146: Make GradleBuildWithGeodeCoreAcceptanceTest run on JDK 17 (#7570)
Dale Emery [Wed, 13 Apr 2022 17:12:52 +0000 (10:12 -0700)] 
GEODE-10146: Make GradleBuildWithGeodeCoreAcceptanceTest run on JDK 17 (#7570)

PROBLEM

GradleBuildWithGeodeCoreAcceptanceTest attempts to run Gradle v5.1.1
using the test JVM. This fails when the test is run in JDK 17, because
Gradle 5.1.1 does not support JDK 17.

SOLUTION

Configure the test's "inner" build to use the value of the GRADLE_JVM
environment variable as its JVM. This makes it use the same JVM that we
use to build Geode.

2 months agoGEODE-10193: Replace openhft compiler with geode-junit compiler (#7580)
Dale Emery [Wed, 13 Apr 2022 17:12:32 +0000 (10:12 -0700)] 
GEODE-10193: Replace openhft compiler with geode-junit compiler (#7580)

PROBLEM

`QueryPdxDataDUnitTest` compiles and loads classes using the
`net.openhft.compiler` library, which attempts to access a field of
`Unsafe` that does not exist on JDK 17.

SOLUTION

Use the compiler system from `geode-junit`'s
`org.apache.geode.test.compiler` package.

2 months agoGEODE-9512: close receiver connection if membership check timed out (#7409)
Kamilla Aslami [Wed, 13 Apr 2022 07:32:10 +0000 (00:32 -0700)] 
GEODE-9512: close receiver connection if membership check timed out (#7409)

If a reader thread performs membership check and it fails, we should close the connection as the sender didn't pass the authentication check.

2 months agoGEODE-6588: Cleanup missing @Deprecated (#7545)
Jacob Barrett [Wed, 13 Apr 2022 04:58:35 +0000 (21:58 -0700)] 
GEODE-6588: Cleanup missing @Deprecated (#7545)

Adds missing @Deprecated to all symbols with Javadoc tag @deprecated.

2 months agoGEODE-10222: Handle null memberID in GII (#7569)
Donal Evans [Tue, 12 Apr 2022 21:03:15 +0000 (14:03 -0700)] 
GEODE-10222: Handle null memberID in GII (#7569)

 - Instead of throwing from DiskVersionTag.replaceNullIDs() if memberID
 is null, check if the memberID is null after calling  replaceNullIDs() in
 InitialImageOperation.processChunk() and then return false if it is
 - Add debug log to record if this has occurred
 - Add unit test for the new behaviour

Authored-by: Donal Evans <doevans@vmware.com>
2 months agoGEODE-10234: Do not generate tailKey if parallel wan not enabled. (#7583)
Eric Shu [Tue, 12 Apr 2022 20:40:28 +0000 (13:40 -0700)] 
GEODE-10234: Do not generate tailKey if parallel wan not enabled. (#7583)

2 months agoGEODE-10230: PDX UPDATE/DELETE in Mgmt REST API (#7578)
Juan José Ramos [Tue, 12 Apr 2022 19:24:29 +0000 (20:24 +0100)] 
GEODE-10230: PDX UPDATE/DELETE in Mgmt REST API (#7578)

Add update (HTTP put) and delete (HTTP DELETE) operations support for
PDX in the cluster management REST API service.

- Add and update unit and integration tests.
- Keep old update behaviour (NotImplementedException thrown) for cache
  configurations other than PDX.

2 months agoGEODE-10232: reformat list for more reliable rendering (#7581)
Dave Barnes [Tue, 12 Apr 2022 18:56:00 +0000 (11:56 -0700)] 
GEODE-10232: reformat list for more reliable rendering (#7581)

2 months agoGEODE-10204: Add Test Coverage for SizeableByteArrayList (#7566)
Bala Kaza Venkata [Tue, 12 Apr 2022 17:42:06 +0000 (13:42 -0400)] 
GEODE-10204: Add Test Coverage for SizeableByteArrayList (#7566)

2 months agoGEODE-10157: Add Radish Delta Unit Tests (#7558)
Ray Ingles [Tue, 12 Apr 2022 14:11:19 +0000 (10:11 -0400)] 
GEODE-10157: Add Radish Delta Unit Tests (#7558)

* GEODE-10157: Add Radish Delta Unit Tests

Unit tests for all the Geode-for-Redis delta types.

Co-authored-by: Ray Ingles <ringles@vmware.com>
2 months agoGEODE-10225: Gfsh start commands add exports on JDK 11+ (#7572)
Dale Emery [Mon, 11 Apr 2022 18:09:25 +0000 (11:09 -0700)] 
GEODE-10225: Gfsh start commands add exports on JDK 11+ (#7572)

PROBLEM

When run on JDK 17, numerous acceptance tests fail because a launched
locator or server requires access to the following packages:
- java.base/sun.nio.ch
- java.management/com.sun.jmx.remote.security

SOLUTION

- Add a `MemberJvmOptions` class that reports the JDK-dependent options
  required to launch a locator or server on the current process's JDK.
- Change `StartLocatorCommand` and `StartServerCommand` to add those
  options to the command line when launching locators and servers.

FUTURE

Future PRs will likely put these opens/exports in an argument file, then
configure these commands to use the argument file. We are deferring that
until we identify additional needs for the argument file, so we can
choose an appropriate location for the argument file.

Co-authored-by: Dale Emery <demery@vmware.com>
Co-authored-by: Kirk Lund <klund@apache.org>
Co-authored-by: Kirk Lund <klund@apache.org>
2 months agoGEODE-10097: Avoid Thread.sleep for re-auth in MessageDispatcher (#7556)
Jinmei Liao [Mon, 11 Apr 2022 15:48:34 +0000 (08:48 -0700)] 
GEODE-10097: Avoid Thread.sleep for re-auth in MessageDispatcher (#7556)

2 months agoRevert "GEODE-10126: Replace Geode for Redis properties with system properties (...
Jens Deppe [Fri, 8 Apr 2022 23:53:23 +0000 (16:53 -0700)] 
Revert "GEODE-10126: Replace Geode for Redis properties with system properties (#7478)" (#7576)

This reverts commit ee1c412d8af3e6311f569948c3248eddc1fe8009.

2 months agoSocketException is now also handled by messenger.handleJGroupsIOException (#7530)
Darrel Schneider [Fri, 8 Apr 2022 16:51:03 +0000 (09:51 -0700)] 
SocketException is now also handled by messenger.handleJGroupsIOException (#7530)

2 months agoGEODE-10127: Reduces verbosity of log messages.
Jacob Barrett [Thu, 7 Apr 2022 18:03:08 +0000 (11:03 -0700)] 
GEODE-10127: Reduces verbosity of log messages.

Removes SSLConfig from toString.
Logs with original toString/marshalForClient string.

2 months agoGEODE-10127: Corrects serialization backwards compatibility issues.
Jacob Barrett [Thu, 7 Apr 2022 00:00:18 +0000 (17:00 -0700)] 
GEODE-10127: Corrects serialization backwards compatibility issues.

Serialize but ignore unused fields.
Adds annotation to identify Java Serializable compatibility fields.

2 months agoGEODE-10221: Fix sizing when creating a RedisList copy (#7568)
Jens Deppe [Thu, 7 Apr 2022 20:32:09 +0000 (13:32 -0700)] 
GEODE-10221: Fix sizing when creating a RedisList copy (#7568)

- The size must be updated as part of cloning an existing list.

2 months agoGEODE-10077: Avoid callbacks in wan-copy region (#7391)
Alberto Gomez [Thu, 7 Apr 2022 18:51:52 +0000 (20:51 +0200)] 
GEODE-10077: Avoid callbacks in wan-copy region (#7391)

The wan-copy region command does not always prevent
that callbacks are executed at the remote site for
the entries copied.

The value set by the wan-copy region command for
generateCallbacks to false in the events sent via
the gateway sender was not being propagated by the server
that received the events in the remote site (via the gateway
receiver) when proxying the put by means of a PutMessage or
UpdateMessage in order to send the event to the server with
the primary bucket or to replicate the put in case of more
than one replica in the region.

The flags in the PutMessage and UpdateMessage have been used
to propagate the value of generateCallbacks.

2 months agoGEODE-10203: SerialVersionUID added. (#7529)
Nabarun Nag [Thu, 7 Apr 2022 16:24:48 +0000 (09:24 -0700)] 
GEODE-10203: SerialVersionUID added. (#7529)

* SerialVersionUID added to GetClusterConfigurationFunction.
* Changes to this class will prevent breaking backward compatibility.

2 months agoGEODE-10122: P2P Messaging Handles TLS KeyUpdate Message (#7449)
Bill Burcham [Thu, 7 Apr 2022 03:14:48 +0000 (20:14 -0700)] 
GEODE-10122: P2P Messaging Handles TLS KeyUpdate Message  (#7449)

* Key expiration works for TLSv1.3 and GCM-based ciphers
* TLS KeyUpdate messages are processed correctly

2 months agoGEODE-10214: Improve speed of JvmSizeUtils.roundUpSize (#7548)
Jens Deppe [Wed, 6 Apr 2022 20:57:46 +0000 (13:57 -0700)] 
GEODE-10214: Improve speed of JvmSizeUtils.roundUpSize (#7548)

This small change improves the speed of this method by about 30% (as per
basic JMH benchmarking). benchamrk1 is the original and benchmark2 the
change.

```
Benchmark                     Mode  Cnt     Score     Error  Units
PerformanceSample.benchmark1  avgt    5  3480.815 ± 387.131  us/op
PerformanceSample.benchmark2  avgt    5  2418.937 ± 586.209  us/op
```

2 months agoGEODE-10127: Corrects NullPointerException in hashCode(). (#7559)
Jacob Barrett [Wed, 6 Apr 2022 20:16:01 +0000 (13:16 -0700)] 
GEODE-10127: Corrects NullPointerException in hashCode(). (#7559)

When unmarshalling an instance with a host name that can't be resolved a
NullPointerException is thrown in hashCode(). Use Objects.hash() to
resolve hash code to avoid NullPointerException.

2 months agoGEODE-10046: Bump 3rd-party dependency versions (#7557)
Owen Nichols [Wed, 6 Apr 2022 19:20:12 +0000 (12:20 -0700)] 
GEODE-10046: Bump 3rd-party dependency versions (#7557)

Geode endeavors to regularly update 3rd-party dependencies to increase
shelf life, security and reliability of releases.

Dependency bumps in this batch:
* Bump classgraph from 4.8.141 to 4.8.143
* Bump jetty from 9.4.45.v20220203 to 9.4.46.v20220331
* Bump jna from 5.10.0 to 5.11.0
* Bump junit-pioneer from 1.6.1 to 1.6.2
* Bump lettuce-core from 6.1.6.RELEASE to 6.1.8.RELEASE
* Bump maven-artifact from 3.8.1 to 3.8.5
* Bump micrometer-core from 1.8.3 to 1.8.4
* Bump nebula.lint from 17.6.1 to 17.7.0
* Bump netty from 4.1.74.Final to 4.1.75.Final
* Bump rat from 0.7.0 to 0.7.1
* Bump shiro-core from 1.8.0 to 1.9.0
* Bump spotless from 6.2.2 to 6.4.1
* Bump spring-boot-starter-web from 2.6.5 to 2.6.6
* Bump swagger-annotations from 1.6.2 to 1.6.6
* Bump tomcat from 9.0.59 to 9.0.62

2 months agoGEODE-9991: Refactor for consistency and add tests. (#7533)
Jacob Barrett [Wed, 6 Apr 2022 19:11:11 +0000 (12:11 -0700)] 
GEODE-9991: Refactor for consistency and add tests. (#7533)

* Combine common configuration into method for consistency.
* Adds tests for new extracted methods.

2 months agoGEODE-9704: Ensure that register interest is called before ready for events (#7442)
mhansonp [Wed, 6 Apr 2022 16:27:03 +0000 (09:27 -0700)] 
GEODE-9704: Ensure that register interest is called before ready for events (#7442)

- RegisterInterestOps need to happen before ReadyForEventsOp is sent
  These changes make sure that happens.

- Added an InterestResultPolicyCheck

Authored-by: Barry Oglesby <boglesby@users.noreply.github.com>
Un-ignored a test that will reproduce the issue
periodically during a number of runs. It is a flaky
test without the core fix.

Authored-by: Jinmei Liao <jiliao@pivotal.io>
2 months agoGEODE-10121: Fix transactional redis commands (#7513)
Bala Kaza Venkata [Wed, 6 Apr 2022 15:10:17 +0000 (11:10 -0400)] 
GEODE-10121: Fix transactional redis commands (#7513)

* GEODE-10121: Fix transactional redis commands

MSET, SMOVE commands are transactional but they have not been working as
transactional. This commit will fix these commands to behave that way.

Authored-by: Bala Kaza Venkata <bkazavenkata@vmware.com>
2 months agoGEODE-10160: fixes SizeableByteArrayList sizing (#7519)
Steve Sienkowski [Wed, 6 Apr 2022 14:13:38 +0000 (10:13 -0400)] 
GEODE-10160: fixes SizeableByteArrayList sizing (#7519)

* Update SizeableByteArrayList with overrides for LinkedList's set() and add()
methods to ensure memory overhead is updated appropriately. This helps to
correct sizing issues in other RedisList methods such as LINSERT and LTRM.

Co-authored-by: Jens Deppe <jdeppe@vmware.com>
2 months agoGEODE-10216: Add test for existence of VM stats (#7551)
Hale Bales [Wed, 6 Apr 2022 00:16:15 +0000 (17:16 -0700)] 
GEODE-10216: Add test for existence of VM stats (#7551)

When we started running with JDK 11, some users noticed that a few stats had gone missing. There was a one line fix in test.gradle that was added as part of a bigger effort, but the change was not tested. This adds a test for the existence of the VM stats so that none of the stats go missing in the future.

also changes all the assertions to use assertj.

2 months agoGEODE-10053: Use stored DistributionConfig to create SSL configurations (#7366)
Nabarun Nag [Tue, 5 Apr 2022 21:55:26 +0000 (14:55 -0700)] 
GEODE-10053: Use stored DistributionConfig to create SSL configurations (#7366)

* While creating SSLConfig no new DistributionConfigImpl is created.
* Now, the DistributionConfig is taken from the InternalLocator class.

2 months agoGEODE-10198: Fix LINSERT's case-sensitivity for arguments (#7552)
Bala Kaza Venkata [Tue, 5 Apr 2022 18:16:32 +0000 (14:16 -0400)] 
GEODE-10198: Fix LINSERT's case-sensitivity for arguments (#7552)

LINSERT was case-sensitive with its arguments BEFORE/AFTER.Redis
implementation of LINSERT is not case-sensitive.

2 months agoGEODE-10126: Replace Geode for Redis properties with system properties (#7478)
Jens Deppe [Tue, 5 Apr 2022 16:53:00 +0000 (09:53 -0700)] 
GEODE-10126: Replace Geode for Redis properties with system properties (#7478)

* GEODE-10126: Replace Geode for Redis properties with system properties

- All previous Geode for Redis properties that were defined in
  geode-core are replaced by java system properties.
  - gemfire.geode-for-redis-port
  - gemfire.geode-for-redis-bind-address
  - gemfire.geode-for-redis-bind-username
  - gemfire.geode-for-redis-redundant-copies
  - gemfire.geode-for-redis-enabled
- Redis is enabled (using defaults) if the `enabled` property is set to
  true OR if any of the other properties are explicitly set as java
  system properties.
- Introduce `RedisConfiguration` interface to access properties.
- Concrete implementation of `SystemPropertyBasedRedisConfiguration`
  that uses system properties to define Radish properties.
- Integration Tests use `TestRedisConfiguration` to avoid having to set
  system properties.
- Services started by Geode (`CacheService`s) that throw exceptions
  during initialization will cause the Cache to fail to startup.
  Previously any such errors were only logged.
- Default bind address is explicitly 0.0.0.0 which is more expressive than just an empty string

2 months agoGEODE-10106: Handle NPE in QueueManagerImpl (#7471)
Hale Bales [Mon, 4 Apr 2022 21:13:33 +0000 (14:13 -0700)] 
GEODE-10106: Handle NPE in QueueManagerImpl (#7471)

CacheClientNotifierDUnitTest failed with an NPE because queuedConnection is occationally null when trying to recover the primary.

This is solved by checking for null before calling any methods on that object.

- fixes spelling mistakes.
- the primary can be null when removing a connection, and when a new
  primary can't be found when recovering a connection.
- the null check protects us from both of those circumstances when
  scheduling the redundancy satisfier.

2 months agoGEODE-10211: Correctly check persistence on accessor (#7546)
Eric Shu [Mon, 4 Apr 2022 20:52:32 +0000 (13:52 -0700)] 
GEODE-10211: Correctly check persistence on accessor (#7546)

 * To set possible duplicate for an event, whether region is persistent
   need to be determined. Allow an accessor to check the setting through
   profiles.

* Changed the order of condition check so that no need to send the find
version tag message to peers if persistence is true.

2 months agoGEODE-10116: Enable Redis TCL tests for Lists (#7521)
Ray Ingles [Mon, 4 Apr 2022 20:14:51 +0000 (16:14 -0400)] 
GEODE-10116: Enable Redis TCL tests for Lists (#7521)

* GEODE-10116: Enable Redis TCL tests for Lists

Co-authored-by: Ray Ingles <ringles@vmware.com>
2 months agoGEODE-9953: Implement LTRIM Command (#7403)
Ray Ingles [Mon, 4 Apr 2022 19:35:30 +0000 (15:35 -0400)] 
GEODE-9953: Implement LTRIM Command (#7403)

* GEODE-9953: Implement  Redis LTRIM command

* Docs updated

Co-authored-by: Ray Ingles <ringles@vmware.com>
2 months agoGEODE-10127: Improve consistency of marshal/unmarshal calls. (#7463)
Jacob Barrett [Mon, 4 Apr 2022 17:37:59 +0000 (10:37 -0700)] 
GEODE-10127: Improve consistency of marshal/unmarshal calls. (#7463)

* Refactor to common constructor.
* Add unmarshal method in place of specialized constructor.
* Replace toString with specialized marshal for using hostname-for-clients
  or bind-address.

2 months agoGEODE-10213: Remove kirklund from several codeowner areas (#7547)
Kirk Lund [Mon, 4 Apr 2022 16:44:52 +0000 (09:44 -0700)] 
GEODE-10213: Remove kirklund from several codeowner areas (#7547)

2 months agoGEODE-9854: Orphaned .drf file causing memory leak (#7234)
Jakov Varenina [Mon, 4 Apr 2022 06:51:38 +0000 (08:51 +0200)] 
GEODE-9854: Orphaned .drf file causing memory leak (#7234)

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

Issue:
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 special
case 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 special case 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 file.
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.

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

Co-authored-by: Alberto Gomez <alberto.gomez@est.tech>
3 months agoGEODE-9568 Update Bookbindery gem (#7541)
Max Hufnagel [Fri, 1 Apr 2022 21:17:07 +0000 (14:17 -0700)] 
GEODE-9568 Update Bookbindery gem (#7541)

https://issues.apache.org/jira/browse/GEODE-9568

The Geode User Guide build script uses this Gemfile.lock file when it runs Docker, but the "bookbindery" gem v10.1.17 was pulled from RubyGems. This results in the script failing.
Updating the version of the gem to 1.10.18 resolves this issue.

3 months agoGEODE-10199: Make retried putIfAbsent work (#7520)
Eric Shu [Fri, 1 Apr 2022 18:55:08 +0000 (11:55 -0700)] 
GEODE-10199: Make retried putIfAbsent work (#7520)

* Allow a retried putIfAbsend operation to proceed futher so that the
   operation can be distributed to other peers in basicPutPart2 and
   dispatch the event to their clients, even if the event has set the
   valid version tag already.

3 months agoAdd @pivotal-jbarrett to CODEOWNERS (#7539)
Jacob Barrett [Fri, 1 Apr 2022 16:52:26 +0000 (09:52 -0700)] 
Add @pivotal-jbarrett to CODEOWNERS (#7539)

3 months agoGEODE-10125: Switch Radish data structures to use DataSerializable (#7512)
Jens Deppe [Fri, 1 Apr 2022 13:29:14 +0000 (06:29 -0700)] 
GEODE-10125: Switch Radish data structures to use DataSerializable (#7512)

3 months agoGEODE-10191: Radish RENAME and RESTORE create notification events (#7537)
Jens Deppe [Fri, 1 Apr 2022 03:26:59 +0000 (20:26 -0700)] 
GEODE-10191: Radish RENAME and RESTORE create notification events (#7537)

- Both of these commands have the ability to create events to satisfy
  BLPOP.
- Introduce a NotificationEvent enum which is passed to fireEvent.
- Previously the RedisCommandType was being passed, but this does not
  work for RENAME which creates RENAME_FROM and RENAME_TO events. In the
  future, other commands will need to create multiple events too.

3 months agoGEODE‑10179: Bump jackson-databind from 2.13.2.1 to 2.13.2.2 (#7526)
Owen Nichols [Fri, 1 Apr 2022 00:16:54 +0000 (17:16 -0700)] 
GEODE‑10179: Bump jackson-databind from 2.13.2.1 to 2.13.2.2 (#7526)

This just eliminates the need to override the jackson-bom version, no actual new fixes

3 months agoGEM-3405 Correct Java API method (#7534)
Max Hufnagel [Thu, 31 Mar 2022 22:51:31 +0000 (15:51 -0700)] 
GEM-3405 Correct Java API method (#7534)

https://jira-pivotal.atlassian.net/browse/GEM-3405

Correct Java API method from `getDiskStore` to `findDiskStore`.

3 months agoGEODE-10171: Update versioning for no-op operations (#7527)
Kris10 [Thu, 31 Mar 2022 22:48:02 +0000 (15:48 -0700)] 
GEODE-10171: Update versioning for no-op operations (#7527)

Modified lrem to not update versioning if nothing was removed from the
list.

3 months agoGEODE-10141: remove test expectation of toString format (#7525)
Darrel Schneider [Thu, 31 Mar 2022 19:41:24 +0000 (12:41 -0700)] 
GEODE-10141: remove test expectation of toString format (#7525)

Test now asks the GMSJoinLeave for its locators and validates
that they are in the exception message instead of having a test
expectation of how InetAddress will be formatted in this exception.

3 months agoGEODE-10201: Bump spring from 5.3.16 to 5.3.18 (#7524)
Owen Nichols [Thu, 31 Mar 2022 19:18:32 +0000 (12:18 -0700)] 
GEODE-10201: Bump spring from 5.3.16 to 5.3.18 (#7524)

* GEODE-10201: Bump spring dependency versions

Geode endeavors to update to the latest version of 3rd-party
dependencies on develop wherever possible.  Doing so increases the
shelf life of releases and increases security and reliability.
Doing so regularly makes the occasional hiccups this can cause easier
to pinpoint and address.

Dependency bumps in this batch:
* Bump spring from 5.3.16 to 5.3.18
* Bump spring-boot-starter from 2.6.4 to 2.6.5

3 months agoGEODE-10196: now checks if msg contains "Connection reset" (#7528)
Darrel Schneider [Thu, 31 Mar 2022 18:45:43 +0000 (11:45 -0700)] 
GEODE-10196: now checks if msg contains "Connection reset" (#7528)

The test now looks for "Connection reset" instead of "Connection reset by peer"

3 months agoGEODE-9955: Add RPUSHX command (#7507)
Kris10 [Thu, 31 Mar 2022 16:09:32 +0000 (09:09 -0700)] 
GEODE-9955: Add RPUSHX command (#7507)

This implements a version of the Redis RPUSHX command, which is used for
list data types. Associated tests were also added.

For a list stored at a key, rpushx adds the specified element to the tail of the
list. If the key does not exist, no operation will be performed.

3 months agoGEODE-9568-User-Guide-script-keeps-generated-files (#7518)
Max Hufnagel [Thu, 31 Mar 2022 03:58:35 +0000 (20:58 -0700)] 
GEODE-9568-User-Guide-script-keeps-generated-files (#7518)

Add explanation: What to do with the generated files

3 months agoGEODE-10180: endpoint validation for the gateway using the legacy configuration ...
Kamilla Aslami [Thu, 31 Mar 2022 01:26:26 +0000 (18:26 -0700)] 
GEODE-10180: endpoint validation for the gateway using the legacy configuration (#7502)

SSLConfigurationFactory.configureLegacyGatewaySSL() should configure
endpoint validation if it is specified in distribution configuration
properties.

3 months agoGEODE-10162: Try to find and set version tag if needed (#7487)
Eric Shu [Wed, 30 Mar 2022 17:47:50 +0000 (10:47 -0700)] 
GEODE-10162: Try to find and set version tag if needed (#7487)

* In geode, version tags are not sent to receiver during GII. When an
  operation is retried on the receiver, a valid tag is needed so that the
  operation can be distributed to other peers. Valid version tage will
  be searched in the cluster and set in the event to make sure the
  operation is distributed.

3 months agoGEODE-10158: fix critical-offheap-threshold interaction with QueryMonitor (#7483)
Darrel Schneider [Wed, 30 Mar 2022 17:20:15 +0000 (10:20 -0700)] 
GEODE-10158: fix critical-offheap-threshold interaction with QueryMonitor (#7483)

* Removed setQueryMonitorRequiredForResourceManager from InternalCache.
Now when we are considering creating a QueryMonitor, the cache will
ask the resource manager for its critical heap percentage. If it is 0
then it the resource manager does not need a QueryMonitor for low mem monitoring.
Also optimized MemoryMonitor.getThresholds to not make a copy of the result
since MemoryThresholds is immutable.

* added unit test coverage for changes to getQueryMonitor
also cleaned up old warnings in GemFireCacheImplTest

* added unit test that proves getQueryMonitor now ignores the critical offheap setting

3 months agoGEODE-10136: Make Function.getId() handle null canonical name (#7505)
Dale Emery [Wed, 30 Mar 2022 16:31:14 +0000 (09:31 -0700)] 
GEODE-10136: Make Function.getId() handle null canonical name (#7505)

PROBLEM

The default implementation of `Function.getId()` returns the canonical
name of the function's class. But:
- On all JDKs, an anonymous class has no canonical name.
- Starting with JDK 15, a hidden class (such as the class of a lambda
  expression) has no canonical name.

Given that `Function` is annotated as a functional interface, it is
problematic that its default `getId()` returns `null` for functions
created as anonymous classes and (on JDK 15+) via lambda expressions.

SOLUTION

Change `Function.getId()` to return its class's name if the class has no
canonical name.

3 months agoGEODE-10151: Make geode-for-redis optional for a geode server
Dan Smith [Wed, 30 Mar 2022 15:40:34 +0000 (08:40 -0700)] 
GEODE-10151: Make geode-for-redis optional for a geode server

Removing the geode-for-redis project and it's dependencies from the default
classpath of a geode server. Before this change, geode-for-redis was installed
in the lib directory of the server along with it's dependencies, and it was not
easy to run without it.

Creating a distribution for geode-for-redis that can be added to the classpath
of a server if the user chooses. This distribution is currently being built
in the geode-for-redis/build/distributions directory, as well as placed
as a zip file in the tools/Modules/ directory of the overall geode
distribution. This distribution only contains dependencies that are not
already on the classpath of a geode server.

To generate the redis distribution run
./gradlew geode-for-redis:installDist

or for the whole geode distribution, including the redis zip file run
./gradlew geode-assembly:installDist

See the gradle documentation on the distribution plugin for more details.

The redis tests that previously required a GEODE_HOME to run now also require
a GEODE_FOR_REDIS_HOME directory that points into an installed distribution of
geode-for-redis. The tests add the geode-for-redis jars into the classpath using this
environment variable. When running tests through gradle we set the
GEODE_FOR_REDIS_HOME environment variable automatically.

3 months agoGEODE-10087: Enhance off-heap fragmentation visibility. (#7407)
Alberto Gomez [Wed, 30 Mar 2022 11:26:07 +0000 (13:26 +0200)] 
GEODE-10087: Enhance off-heap fragmentation visibility. (#7407)

* GEODE-10087: Enhance off-heap fragmentation visibility.

As per RFC https://cwiki.apache.org/confluence/display/GEODE/Enhance+Off-heap+memory+fragmentation+visibility
Geode's off-heap fragmentation visibility has been improved
by adding a new stat: freedChunks as well as
by the periodic update of the largestFragment stat.

The new one stat will also be periodically updated
with a default frequency of one hour that can be changed by the
update-off-heap-stats-frequency-ms system property.

Besides, the new stat and the largestFragment stat
will be published via JMX.

* GEODE-10087: Update after review

* GEODE-10087: Rename method after review

3 months agoGEODE-10190: Improve runntime of MSetIntegrationTest and RenameIntegratinoTest (...
Jens Deppe [Wed, 30 Mar 2022 02:57:23 +0000 (19:57 -0700)] 
GEODE-10190: Improve runntime of MSetIntegrationTest and RenameIntegratinoTest (#7511)

- Reduce the iterations and/or elements used by these tests reducing the
  runtimes significantly (down to seconds instead of minutes).

3 months agoGEODE-10127: Adds test to preserve correct marshalling behavior. (#7461)
Jacob Barrett [Tue, 29 Mar 2022 18:30:54 +0000 (11:30 -0700)] 
GEODE-10127: Adds test to preserve correct marshalling behavior. (#7461)

* Assert that LocatorHelper.addServerLocator preserves the toString format.

* Assert that DistributionLocatorId.toString preserves the expected values
  This includes the bind-address or hostname-for-client values if set.

3 months agoGEODE-10182: Remove no longer needed null check. (#7504)
Eric Shu [Tue, 29 Mar 2022 17:07:49 +0000 (10:07 -0700)] 
GEODE-10182: Remove no longer needed null check. (#7504)

3 months agoGEODE-10119: Handle SSLHandshakeException on JDK17 (#7475)
Dale Emery [Tue, 29 Mar 2022 17:02:47 +0000 (10:02 -0700)] 
GEODE-10119: Handle SSLHandshakeException on JDK17 (#7475)

PROBLEM

On JDK 17, `SslSocket.startHandshake()` can throw
`SSLHandshakeException` in circumstances where JDK 8 and 11 would throw
`SocketException`.

`SocketCreator.configureClientSSLSocket()` catches this exception, logs
it as fatal, and rethrows it.

`ConnectionFactoryImpl.createClientToServerConnection()` then catches it
and logs it as a warning.

This results in lots of warn/fatal log entries for relatively benign
occurrences that, on JDK 8 and 11, would result in debug entries.

Also, `WANSSLDUnitTest.testSenderSSLReceiverNoSSL()` fails when it sees these
unrecognized entries in the log.

SOLUTION

Change `SocketCreator` and `ConnectionFactoryImpl` to recognize when an
`SSLHandshapeException` describes the kind of problem that would have
thrown a `SocketException` on JDK8/11. If so, treat it the same as a
`SocketException`. If not, treat it as a more serious
`SSLHandshakeException`.

3 months agoGEODE-10166: Move tests to correct directory (#7491)
Donal Evans [Tue, 29 Mar 2022 16:47:24 +0000 (09:47 -0700)] 
GEODE-10166: Move tests to correct directory (#7491)

- Rename InternalCacheForClientAccessDUnitTest ->
 InternalCacheForClientAccessDistributedTest
 - Move InternalCacheForClientAccessDistributedTest to geode-core module
 - Remove spurious <tearDown> parameterization from
 InternalCacheForClientAccessDistributedTest
 - Rename NestedQueryClassCastExceptionFailureDUnitTest ->
 NestedQueryClassCastExceptionFailureDistributedTest
 - Move NestedQueryClassCastExceptionFailureDistributedTest to
   geode-core module, change package to cache.query.dunit
 - Rename RebalanceCommandDistributesTest to
  RelanaceCommandAcceptanceTest
 - Move RebalanceCommandAcceptanceTest to geode-assembly module
  acceptanceTest directory as it requires that GEODE_HOME is set
 - Remove files from sanctioned-geode-dunit-serializables.txt

Authored-by: Donal Evans <doevans@vmware.com>
3 months agoGEODE-10179: Bump jackson-databind to 2.13.2.1 (#7500)
Owen Nichols [Mon, 28 Mar 2022 22:40:52 +0000 (15:40 -0700)] 
GEODE-10179: Bump jackson-databind to 2.13.2.1 (#7500)

Geode endeavors to update to the latest version of 3rd-party
dependencies on develop wherever possible.  Doing so increases the
shelf life of releases and increases security and reliability.
Doing so regularly makes the occasional hiccups this can cause easier
to pinpoint and address.

This bump of jackson-databind from 2.13.2 to micropatch 2.13.2.1 is
a little clunkly and once 2.13.3 or 2.14.0 is available, this should
first be reverted...

3 months agouser guide: typo repair in troubleshooting section (#7508)
Dave Barnes [Mon, 28 Mar 2022 22:20:20 +0000 (15:20 -0700)] 
user guide: typo repair in troubleshooting section (#7508)

3 months agoGEODE-10140: Opens/exports for QueryResultFormatter tests (#7481)
Dale Emery [Mon, 28 Mar 2022 16:36:12 +0000 (09:36 -0700)] 
GEODE-10140: Opens/exports for QueryResultFormatter tests (#7481)

* GEODE-10140: Opens/exports for QueryResultFormatter tests

* Add opens/exports for MemoryOverheadIntegrationTest

MemoryOverheadIntegrationTest still fails, the failure is due to
accessing a dynamic package (created as needed by the JDK). Dynamic
packages cannot be opened by command line options, because the packages
do not exist when the JVM starts.

* Opens for Linux

3 months agoGEODE-10171: AbstractRedisData version being incremented for no-op operations can...
Jens Deppe [Mon, 28 Mar 2022 13:17:10 +0000 (06:17 -0700)] 
GEODE-10171: AbstractRedisData version being incremented for no-op operations can lead to corruption (#7496)

For SADD, which may or may not modify the data in the region depending
on whether the member being added is already present in the set, the
version in AbstractRedisData is updated regardless of whether a Delta is
sent to the secondary. This can lead to the version on the primary
wrapping around to be equal to the version on the secondary, which means
that if a delta is sent, it will not be applied on the secondary,
leading to potential data loss.