geode.git
2 months agoGEODE-10340: Add new DiskStoreMXBean JMX metrics (#7726)
Alberto Gomez [Wed, 6 Jul 2022 13:54:47 +0000 (15:54 +0200)] 
GEODE-10340: Add new DiskStoreMXBean JMX metrics (#7726)

* GEODE-10340: Add new DiskStoreMXBean JMX metrics

The following DiskStore stats are now published via JMX:
recoveredEntryCreates, recoveredEntryUpdates and recoveredEntryDestroys.

* GEODE-10340: Added default implementation for new methods

2 months agoGEODE-10392: When gw sender started with cleanqueue remove EvictionController from...
Mario Ivanac [Tue, 5 Jul 2022 11:24:48 +0000 (13:24 +0200)] 
GEODE-10392: When gw sender started with cleanqueue remove EvictionController from diskstore (#7817)

2 months agoGEODE-9484: Improve sending message to multy destinations (#7664)
Mario Ivanac [Fri, 1 Jul 2022 15:46:37 +0000 (17:46 +0200)] 
GEODE-9484: Improve sending message to multy destinations (#7664)

* GEODE-9484: New solution to first try only one attempt to create all connections

* GEODE-9484: added fix for NPE

2 months agoGEODE-9997: added ParallelQueueSetPossibleDuplicateMessage (#7323)
Mario Ivanac [Wed, 29 Jun 2022 20:38:28 +0000 (22:38 +0200)] 
GEODE-9997: added ParallelQueueSetPossibleDuplicateMessage (#7323)

* GEODE-9997: added ParallelQueueSetPossibleDuplicateMessage to signal duplicate events on secondary buckets

2 months agoDecommission CODEOWNERS (#7820)
Owen Nichols [Wed, 29 Jun 2022 19:03:14 +0000 (12:03 -0700)] 
Decommission CODEOWNERS (#7820)

2 months agoGEODE-10020: For Ping task avoid registering new destination endpoint (#7749)
Mario Ivanac [Tue, 28 Jun 2022 20:58:00 +0000 (22:58 +0200)] 
GEODE-10020: For Ping task avoid registering new destination endpoint (#7749)

* GEODE-10020: For Ping task avoid registering new destination endpoint

3 months agoGEODE-10385: User Guide - Remove bad G1GC tuning advice (#7815)
Dave Barnes [Thu, 23 Jun 2022 16:59:03 +0000 (09:59 -0700)] 
GEODE-10385: User Guide - Remove bad G1GC tuning advice (#7815)

3 months agoGEODE-10323: Remove schedule threads in MemoryAllocatorImpl constructor (#7715)
Alberto Gomez [Wed, 22 Jun 2022 16:01:10 +0000 (18:01 +0200)] 
GEODE-10323: Remove schedule threads in MemoryAllocatorImpl constructor (#7715)

* GEODE-10323: Remove schedule threads in MemoryAllocatorImpl

The scheduled executor used in MemoryAllocatorImpl
was scheduled in the constructor. This provoked
intermittent failures in OffHeapStorageJUnitTest testCreateOffHeapStorage
test cases due to a race condition.

The scheduling has been moved to a new method (start())
in the MemoryAllocatorImpl class that is in turn
invoked in the create() static method.

* GEODE-10323: Extract update stats code to new class

3 months agoGEODE-10387: bump dependencies (#7805)
Owen Nichols [Fri, 17 Jun 2022 22:50:09 +0000 (15:50 -0700)] 
GEODE-10387: bump dependencies (#7805)

* GEODE-10387: Bump 3rd-party 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 cargo-core-uberjar from 1.9.10 to 1.9.12
* Bump classgraph from 4.8.146 to 4.8.147
* Bump jackson from 2.13.2 to 2.13.3
* Bump junit-pioneer from 1.6.2 to 1.7.1
* Bump micrometer-core from 1.9.0 to 1.9.1
* Bump mockito-core from 4.4.0 to 4.6.1
* Bump spring from 5.3.20 to 5.3.21
* Bump spring-hateoas from 1.4.2 to 1.5.0
* Bump spring-ldap-core from 2.3.7.RELEASE to 2.4.0
* Bump swagger-annotations from 2.2.0 to 2.2.1

3 months agoFixes for cleaning GCP resources from pipelines (#7759)
Robert Houghton [Thu, 16 Jun 2022 22:49:24 +0000 (15:49 -0700)] 
Fixes for cleaning GCP resources from pipelines (#7759)

* Fixes for cleaning GCP resources from pipelines

* Use meta.properties to feed pipeline cleanup script

* Add comments on use case for this script.

3 months agoGEODE-10388: create better output filter for srcDist task (#7806)
Robert Houghton [Thu, 16 Jun 2022 20:33:47 +0000 (13:33 -0700)] 
GEODE-10388: create better output filter for srcDist task (#7806)

Replace the brittle exclude list for `build` and `out` directories with
a closure containing comparison logic for file-type and name. Makes sure
that regular files named `out` are still archived.

3 months agoGEODE-10378: Change PRs to default to JDK11 only (#7797)
Robert Houghton [Thu, 16 Jun 2022 18:53:36 +0000 (11:53 -0700)] 
GEODE-10378: Change PRs to default to JDK11 only (#7797)

Other JDK will be by request (label) only.

Authored-by: Robert Houghton <rhoughton@pivotal.io>
3 months agoGEODE-10384: Add stack trace to logging (#7804)
Jianxia Chen [Wed, 15 Jun 2022 23:15:44 +0000 (16:15 -0700)] 
GEODE-10384: Add stack trace to logging (#7804)

3 months ago(no JIRA ticket) user guide Security section: Typo & format fixes (#7802)
Dave Barnes [Wed, 15 Jun 2022 21:07:00 +0000 (14:07 -0700)] 
(no JIRA ticket) user guide Security section: Typo & format fixes (#7802)

3 months agoGEODE-10380: use waitingThreadPool to notify dispatcher at re_auth (#7801)
Jinmei Liao [Wed, 15 Jun 2022 17:56:35 +0000 (10:56 -0700)] 
GEODE-10380: use waitingThreadPool to notify dispatcher at re_auth (#7801)

3 months agoGEODE-10326: Convert MessageType to enum. (#7688)
Jacob Barrett [Wed, 15 Jun 2022 01:36:13 +0000 (18:36 -0700)] 
GEODE-10326: Convert MessageType to enum. (#7688)

* Migrate unit tests to JUnit 5.
* Add missing unit tests.

3 months agoGEODE-10261: VMProvider.invokeAsync uses appropriate parameterization. (#7631)
Patrick Johnson [Wed, 15 Jun 2022 00:44:26 +0000 (17:44 -0700)] 
GEODE-10261: VMProvider.invokeAsync uses appropriate parameterization. (#7631)

* Cleanup use of AsyncInvocation.
* Add generic parameters to AsyncInvocation variables where they were missing.
* Cleaned up by changing single element arrays to variables.

3 months agoGEODE-10369 part 2 Fix hardcoded gcp project reference and adjust windows unit test...
Sean Goller [Mon, 13 Jun 2022 18:56:38 +0000 (11:56 -0700)] 
GEODE-10369 part 2 Fix hardcoded gcp project reference and adjust windows unit test cpu/ram usage. (#7798)

* Fix hardcoded reference to gcp project.

* Fix windows unit test ram and cpu settings.

3 months agoGEODE-10267: fix creating gw sender with non-existent disk store (#7643)
Mario Kevo [Mon, 13 Jun 2022 07:53:44 +0000 (09:53 +0200)] 
GEODE-10267: fix creating gw sender with non-existent disk store (#7643)

* GEODE-10267: fix creating gw sender with non-existent disk store

3 months agoGEODE-10369: Calculate heavy lifter costs. (#7796)
Sean Goller [Sat, 11 Jun 2022 06:49:53 +0000 (23:49 -0700)] 
GEODE-10369: Calculate heavy lifter costs. (#7796)

* Change to e2 instances.

* Adjust machine type based on cpu and ram requirements.

* Test half cpu on performance.

* remove half-cpu test. Add calculations for standard machine types.

* fix machine type

* Indicate machine type to be created.

* Determine CPU Platform.

* Abandon n2 types because they don't scale high enough cpuwise.

* Remove min cpu platform.

* Utilize highcpu instances for cpu==ram jobs.

* Make build job cpu==ram.

* Change windows unit tests cpu/ram from 10 to 8.

* Calculate total cost in delete_instance.sh

* Add coreutils to alpine-tools so we can get gnu date.

* Dump the json file with cost data.

* Add highcpu case and identify unknown case.

* fix MACHINE_FAMILY references.

* Fix jq syntax. Copy cost-data.json to infra bucket.

* Change cpuCost and ramCost to cpuRate and ramRate

* Divide ram by 1024 because it's megabytes.

* Use activity audit log instead of syslog so we can audit windows.

* Revert job cpu changes.

3 months agoGEODE-10375: update supported api docs link (#7794)
Jinmei Liao [Fri, 10 Jun 2022 18:52:15 +0000 (11:52 -0700)] 
GEODE-10375: update supported api docs link (#7794)

3 months agoGEODE-6504: Instant class used. (#7779)
Nabarun Nag [Fri, 10 Jun 2022 18:16:51 +0000 (11:16 -0700)] 
GEODE-6504: Instant class used. (#7779)

* Using instant class instead of nanos.
* Nanos is not updated that often hence not proper resolution.

3 months agoGEODE-10329: Handle RejectedExecutionException (#7721)
Donal Evans [Fri, 10 Jun 2022 16:27:15 +0000 (09:27 -0700)] 
GEODE-10329: Handle RejectedExecutionException (#7721)

Do not throw RejectedExecutionException if the GMSHealthMonitor is
stopping

Authored-by: Donal Evans <doevans@vmware.com>
3 months agoGEODE-6489: fix a flaky test (#7777)
Jinmei Liao [Thu, 9 Jun 2022 18:10:54 +0000 (11:10 -0700)] 
GEODE-6489: fix a flaky test (#7777)

* fix GemFireDeadlockDetectorDUnitTest.testDistributedDeadlockWithDLock

3 months agoGEODE-10351: Wait till the cache is completely closed before re-creating (#7760)
Jinmei Liao [Thu, 9 Jun 2022 17:13:03 +0000 (10:13 -0700)] 
GEODE-10351: Wait till the cache is completely closed before re-creating (#7760)

3 months agoGEODE-7875: fix create index gfsh command on partitioned region (#7629)
Mario Kevo [Thu, 9 Jun 2022 09:14:13 +0000 (11:14 +0200)] 
GEODE-7875:  fix create index gfsh command on partitioned region (#7629)

* GEODE-7875:  fix create index gfsh command on partitioned region

3 months agoRevert "GEODE-9632: Allow INDEX_THRESHOLD_SIZE System property to override CompiledVa...
Nabarun Nag [Thu, 9 Jun 2022 02:54:40 +0000 (19:54 -0700)] 
Revert "GEODE-9632: Allow INDEX_THRESHOLD_SIZE System property to override CompiledValue.RESULT_LIMIT (#7010)" (#7787)

This reverts commit 67359dcd

3 months agoGEODE-10321: Acceptance test for Geode access to JDK internals (#7772)
Dale Emery [Wed, 8 Jun 2022 21:17:49 +0000 (14:17 -0700)] 
GEODE-10321: Acceptance test for Geode access to JDK internals (#7772)

* GEODE-10321: Acceptance test for Geode access to JDK internals

Add acceptance tests to demonstrate two ways to give Geode access to
encapsulated fields of a JDK 17 class:

- Tell Gfsh to open the class's package when starting a Geode member.
- Tell Gfsh to use `open-all-jdk-packages-linux-openjdk-17` as an
  argument file when starting a Geode member.

Add another test to demonstrate the kind of error that happens when
Geode cannot access an encapsulated field of a JDK 17 class.

* Clean up

Remove unnecessary dependency on JUnit 5 rule migration support.

Start server without default server.

Other cleanup.

3 months agoGEODE-10068: Make WanCopyRegionFunctionService thread pool configurab… (#7424)
Alberto Gomez [Wed, 8 Jun 2022 13:36:30 +0000 (15:36 +0200)] 
GEODE-10068: Make WanCopyRegionFunctionService thread pool configurab… (#7424)

* GEODE-10068: Make WanCopyRegionFunctionService thread pool configurable through property

* GEODE-10068: Change name of property and add test case

* GEODE-10068: Update after more review comments

3 months agoGEODE-10089: update LICENSE due to redis removal, change to springdoc, and inclusion...
Owen Nichols [Wed, 8 Jun 2022 03:40:46 +0000 (20:40 -0700)] 
GEODE-10089: update LICENSE due to redis removal, change to springdoc, and inclusion of joda-time (#7783)

3 months agoGEODE-10342: Simplify copying jars (#7778)
Max Hufnagel [Wed, 8 Jun 2022 00:04:05 +0000 (17:04 -0700)] 
GEODE-10342: Simplify copying jars (#7778)

3 months agoGEODE-10365: Add referenced but missing components to table (#7775)
Max Hufnagel [Tue, 7 Jun 2022 16:12:12 +0000 (09:12 -0700)] 
GEODE-10365: Add referenced but missing components to table (#7775)

3 months agoGEODE-10280: add Status Message to Status Server Command (#7662)
Mario Ivanac [Tue, 7 Jun 2022 05:07:53 +0000 (07:07 +0200)] 
GEODE-10280: add Status Message to Status Server Command (#7662)

* GEODE-10280: add Status Message to Status Server Command

* GEODE-10280: update test after comments

3 months agoGEODE-8977: change ThreadMonitor to reduce how long it does a "stop the world" Thread...
Darrel Schneider [Mon, 6 Jun 2022 23:45:33 +0000 (16:45 -0700)] 
GEODE-8977: change ThreadMonitor to reduce how long it does a "stop the world" ThreadDump vm op (#7751)

Now uses a cheaper getThreadInfo that does not get lock info by default and calls getThreadInfo for each stuck thread. These are the defaults because they have the shortest time do the the VM ThreadDump operation.
To get locks set the system property "gemfire.threadmonitor.showLocks" to "true".
To get ThreadInfo on all stuck threads with a single call set the system property "gemfire.threadmonitor.batchCalls" to "true".

3 months agoGEODE-10304: locator thread should not exit after reconnecting (#7697)
Jinmei Liao [Mon, 6 Jun 2022 22:59:21 +0000 (15:59 -0700)] 
GEODE-10304: locator thread should not exit after reconnecting (#7697)

* Also refactor ReconnectDUnitTest to use lamdas instead of `Callable` and `Runnable` interfaces.

3 months agoGEODE-10155: Avoid threads hanging when function execution times-out (#7493)
Alberto Gomez [Mon, 6 Jun 2022 18:18:46 +0000 (20:18 +0200)] 
GEODE-10155: Avoid threads hanging when function execution times-out (#7493)

* GEODE-10155: Avoid threads hanging when function execution times-out

* GEODE-10155: Updated after review

* GEODE-10155: More changes after review

* GEODE-10155: Changes after more reviews

* GEODE-10155: Some more changes after review

* GEODE-10155: More changes after review

* GEODE-10155: More clean-up after review

3 months agoGEODE-10346: Correct description of batch-time-interval in doc. (#7742)
Alberto Gomez [Mon, 6 Jun 2022 06:54:33 +0000 (08:54 +0200)] 
GEODE-10346: Correct description of batch-time-interval in doc. (#7742)

3 months agoGEODE-10352: Update Ruby version in Geode doc preview tool (#7753)
Alberto Gomez [Fri, 3 Jun 2022 18:50:13 +0000 (20:50 +0200)] 
GEODE-10352: Update Ruby version in Geode doc preview tool (#7753)

The script to preview the documentation of Geode (./preview-user-guide.sh)
is not working anymore.

The following error appears while running it (unless you have a previously downloaded
geodedocs/temp docker image in your local docker repo):

ERROR: Error installing elasticsearch:
The last version of faraday (>= 0) to support your Ruby & RubyGems was 1.10.0. Try installing it with `gem install faraday -v 1.10.0` and then running the current command again
faraday requires Ruby version >= 2.6. The current ruby version is 2.5.9.229.

That error prevents the preview script to work.

It is needed to update the docker image used to preview the documentation to use a Ruby version >= 2.6.
The versions of other gems also need to be updated after the
change of the Ruby version.

3 months agoShort-circuit CI checks for PRs that don't touch buildable files (#7763)
Robert Houghton [Fri, 3 Jun 2022 17:50:40 +0000 (10:50 -0700)] 
Short-circuit CI checks for PRs that don't touch buildable files (#7763)

* Short-circuit CI checks for PRs that don't touch buildable files

3 months agoGEODE-10356: Corrected the comment (#7762)
Nabarun Nag [Fri, 3 Jun 2022 17:04:53 +0000 (10:04 -0700)] 
GEODE-10356: Corrected the comment (#7762)

* The previous comment on removeOldEntry mentioned that the old entry
was replaced
* This has been corrected to mention that the old entry is removed and
the new entry has been added to the region queue

3 months agoGEODE-10342: Add current jars to HTTP Module for Tomcat instructions (#7745)
Max Hufnagel [Fri, 3 Jun 2022 15:24:40 +0000 (08:24 -0700)] 
GEODE-10342: Add current jars to HTTP Module for Tomcat instructions (#7745)

3 months agoGEODE-10301: support LocalDate and JodaTime (#7737)
Joris Melchior [Fri, 3 Jun 2022 15:13:44 +0000 (11:13 -0400)] 
GEODE-10301: support LocalDate and JodaTime (#7737)

* GEODE-10301: support LocalDate and JodaTime

Co-authored-by: Jinmei Liao <jliao@pivotal.io>
- include libraries so that end-users won't have to add them to the java
  path
- ensure proper serialization in gfsh and pulse

3 months agoGEODE-10327: Overhaul GfshRule to kill processes and save artifacts (#7758)
Kirk Lund [Thu, 2 Jun 2022 23:36:05 +0000 (16:36 -0700)] 
GEODE-10327: Overhaul GfshRule to kill processes and save artifacts (#7758)

PROBLEM

Tests that use GfshRule leave behind orphaned processes and do not save
artifacts for debugging failures.

SOLUTION

GfshRule needs to cleanup all processes it forks. It also needs to save
off all runtime artifacts such as logging, stats, pid files, diskstores
to enable debugging of test failures.

DETAILS

Enhance GfshRule and modify all tests using it for proper debugging and
to prevent test pollution.

Overhaul of GfshRule:

* kill ALL geode processes during cleanup
* use FolderRule to ensure all logs and files are properly saved off
when a test fails
* extract GfshExecutor from JUnit rule code
* GfshExecutor allows a test to use any number of Geode versions with
just one GfshRule
* add Gfsh log level support for easier debugging
* add support for new VmConfiguration to allow control over Geode and
Java versions
* overhaul API of GfshRule and companion classes for better consistency
and design

New FolderRule:

* replaces TemporaryFolder and saves off all content when a test fails
* creates root directory under the gradle worker instead of under temp

Update HTTP session caching module tests:

* use new FolderRule to save all artifacts when a test fails
* use nio Paths for filesystem variables

Update acceptance and upgrade tests that use GfshRule:

* use new improved GfshRule and GfshExecutor
* use new FolderRule instead of TemporaryFolder to save all artifacts
when a test fails
* use --disable-default-server in tests with no clients
* fix flakiness of many tests by using random ports instead of default
or hardcoded port values
* reformat GfshRule API usage in tests to improve readability and
consistency
* add GfshStopper to provide common place to await process stop (stop
locator/server is async so restarting with same ports is very prone
to hitting BindExceptions)

Update ProcessUtils:

* extract NativeProcessUtils and make it public for direct use
* rename InternalProcessUtils as ProcessUtilsProvider and move to its
own class
* rethrow IOExceptions as UncheckedIOExceptions
* fix flakiness in NativeProcessUtilsTest by moving findAvailablePid
into test method

Minor changes:

* improve code formatting and readability
* convert from old io File to nio Path APIs as much as possible
* close output streams to fix filesystem issues on Windows

Fixes flaky test tickets:

* DeployJarAcceptanceTest GEODE-9615
* possibly other tests that uses GfshRule

Changes for resubmit:

* log error message if unable to delete folder
* keep default constructor on GfshRule
* ensure IO streams have proper error handling and don't cause failures
on windows

Changes to build pipelines:

* make jdk17 tests gating

NOTES

The labels jdk8, jdk17, windows, windows-jdk8 and windows-jdk17 were
used to run tests on more environments.

This PR contains mostly test and framework changes. The only product
code altered is ServerLauncher and several classes in
org.apache.geode.internal.process, all of which is in geode-core.

3 months agoGEODE-10355: Bump spring-security from 5.6.3 to 5.6.5 (#7761)
Owen Nichols [Thu, 2 Jun 2022 21:53:42 +0000 (14:53 -0700)] 
GEODE-10355: Bump spring-security from 5.6.3 to 5.6.5 (#7761)

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-security from 5.6.3 to 5.6.5

3 months agoGEODE-10357: add gesterzhou as code owner for logging components (#7764)
Xiaojian Zhou [Thu, 2 Jun 2022 21:35:26 +0000 (14:35 -0700)] 
GEODE-10357: add gesterzhou as code owner for logging components (#7764)

3 months agoGEODE-10106: Use local ref to queueConnection. (#7740)
Nabarun Nag [Thu, 2 Jun 2022 20:20:26 +0000 (13:20 -0700)] 
GEODE-10106: Use local ref to queueConnection. (#7740)

* Using queueConnection local ref for multiple if checks
* As it is a volatile variable, the value may become null mid checks.

3 months agoGEODE-10309: fixup: Give more memory to windows-core-integration-test (#7757)
Robert Houghton [Thu, 2 Jun 2022 18:29:11 +0000 (11:29 -0700)] 
GEODE-10309: fixup: Give more memory to windows-core-integration-test (#7757)

3 months agoGEODE-9711: Refactored DUnit to DistributedTest (#6970)
Nabarun Nag [Thu, 2 Jun 2022 18:16:56 +0000 (11:16 -0700)] 
GEODE-9711: Refactored DUnit to DistributedTest (#6970)

* Typos were fixed in ConflationDUnitTestHelper
* ConflationDUnitTestHelper name was changed to
ConflationDistributedTest
* All DUnit tests affected by ConflationDUnitTestHelper refactoring was
renamed to DistributedTest

3 months agoGEODE-10348: Fix documentation on conflation (#7746)
Alberto Gomez [Thu, 2 Jun 2022 17:55:19 +0000 (19:55 +0200)] 
GEODE-10348: Fix documentation on conflation (#7746)

The Geode documentation states on conflation:
"When an update is added to a queue that has conflation enabled,
if there is already an update message in the queue for the
entry key, then the existing message assumes the value of the
new update and the new update is dropped, as shown here for key A."

Nevertheless, that is not correct. The actual behavior is the following:
"When an update is added to a queue that has conflation enabled,
if there is already an update message in the queue for the
entry key, then the existing message is removed and the new
update is added to the end of the queue, as shown here for key A."

The text has been updated as well as the the figure with the example.

3 months agoGEODE-10309: Give more memory to windows-core-integration-test (#7755)
Robert Houghton [Thu, 2 Jun 2022 17:11:21 +0000 (10:11 -0700)] 
GEODE-10309: Give more memory to windows-core-integration-test (#7755)

3 months agoGEODE-10347: Refactor PartitionedRegionStatsDUnitTest (#7744)
Nabarun Nag [Thu, 2 Jun 2022 04:36:39 +0000 (21:36 -0700)] 
GEODE-10347: Refactor PartitionedRegionStatsDUnitTest (#7744)

* Renamed to PartitionedRegionStatsDistributedTest
* Used the new test framework
* Compartmentalize the cluster members so that parallel tests do not
affect the individual tests.

3 months agoRevert "GEODE-10327: Overhaul GfshRule to kill processes and save artifacts (#7731...
Kirk Lund [Thu, 2 Jun 2022 00:42:17 +0000 (17:42 -0700)] 
Revert "GEODE-10327: Overhaul GfshRule to kill processes and save artifacts (#7731)" (#7750)

This reverts commit 3f8f8db595ca4b99b25fe4d109a8ed118a712701.

3 months agoGEODE-10327: Overhaul GfshRule to kill processes and save artifacts (#7731)
Kirk Lund [Wed, 1 Jun 2022 21:16:35 +0000 (14:16 -0700)] 
GEODE-10327: Overhaul GfshRule to kill processes and save artifacts (#7731)

PROBLEM

Tests that use GfshRule leave behind orphaned processes and do not save
artifacts for debugging failures.

SOLUTION

GfshRule needs to cleanup all processes it forks. It also needs to save
off all runtime artifacts such as logging, stats, pid files, diskstores
to enable debugging of test failures.

DETAILS

Enhance GfshRule and modify all tests using it for proper debugging and
to prevent test pollution.

Overhaul of GfshRule:

* kill ALL geode processes during cleanup
* use FolderRule to ensure all logs and files are properly saved off
  when a test fails
* extract GfshExecutor from JUnit rule code
* GfshExecutor allows a test to use any number of Geode versions with
  just one GfshRule
* add Gfsh log level support for easier debugging
* add support for new VmConfiguration to allow control over Geode and
  Java versions
* overhaul API of GfshRule and companion classes for better consistency
  and design

New FolderRule:

* replaces TemporaryFolder and saves off all content when a test fails
* creates root directory under the gradle worker instead of under temp

Update HTTP session caching module tests:

* use new FolderRule to save all artifacts when a test fails
* use nio Paths for filesystem variables

Update acceptance and upgrade tests that use GfshRule:

* use new improved GfshRule and GfshExecutor
* use new FolderRule instead of TemporaryFolder to save all artifacts
  when a test fails
* use --disable-default-server in tests with no clients
* fix flakiness of many tests by using random ports instead of default
  or hardcoded port values
* reformat GfshRule API usage in tests to improve readability and
  consistency
* add GfshStopper to provide common place to await process stop (stop
  locator/server is async so restarting with same ports is very prone
  to hitting BindExceptions)

Update ProcessUtils:

* extract NativeProcessUtils and make it public for direct use
* rename InternalProcessUtils as ProcessUtilsProvider and move to its
  own class
* rethrow IOExceptions as UncheckedIOExceptions
* fix flakiness in NativeProcessUtilsTest by moving findAvailablePid
  into test method

Minor changes:

* improve code formatting and readability
* convert from old io File to nio Path APIs as much as possible
* close output streams to fix filesystem issues on Windows

Fixes flaky test tickets:

* DeployJarAcceptanceTest GEODE-9615
* possibly other tests that uses GfshRule

Changes for resubmit:

* log error message if unable to delete folder

NOTES

The jdk8, jdk17 and windows labels were used to run tests on more
environments.

This PR contains mostly test and framework changes. The only product
code altered is ServerLauncher and several classes in
org.apache.geode.internal.process, all of which is in geode-core.

3 months agoGEODE-10327: Update geode-dunit and geode-junit codeowners (#7748)
Kirk Lund [Wed, 1 Jun 2022 21:14:48 +0000 (14:14 -0700)] 
GEODE-10327: Update geode-dunit and geode-junit codeowners (#7748)

Add Darrel to geode-dunit and geode-junit while Dale is unavailable.

3 months agoGEODE-10305: Change locator and server dirs (#7730)
Jianxia Chen [Wed, 1 Jun 2022 21:03:21 +0000 (14:03 -0700)] 
GEODE-10305: Change locator and server dirs (#7730)

Use non-temporary directories to keep the logs in case of test failure

3 months agoGEODE-6588: Fixed mismatch of placeholders and arguments (#7375)
Nabarun Nag [Wed, 1 Jun 2022 19:36:36 +0000 (12:36 -0700)] 
GEODE-6588: Fixed mismatch of placeholders and arguments (#7375)

3 months agoGEODE-10294: Compare invalid token during putIfAbsent retry. (#7738)
Eric Shu [Wed, 1 Jun 2022 18:47:59 +0000 (11:47 -0700)] 
GEODE-10294: Compare invalid token during putIfAbsent retry. (#7738)

 * During putIfAbsent retry, comparing invalid token value when
   putIfAbsent of a null value.
 * Do not make putIfAbsent event to update event if current
   entry value is null or invalidate and is a retried event.

3 months agoGEODE-10308: Close the cache after stopping the Tomcat container (#7739)
Jianxia Chen [Wed, 1 Jun 2022 17:44:52 +0000 (10:44 -0700)] 
GEODE-10308: Close the cache after stopping the Tomcat container (#7739)

3 months agoGEODE-10309: Enable parallel tests for windows tests (#7743)
Robert Houghton [Wed, 1 Jun 2022 17:36:43 +0000 (10:36 -0700)] 
GEODE-10309: Enable parallel tests for windows tests (#7743)

* more parallelism for windows (not acceptance) tests

Using the test-isolation plugin for parallelism, instead of Docker,
enables parallel testing on Windows for some jobs.

3 months agoGEODE-10312: Fix the v1/v3 mismatch. (#7720)
Patrick Johnson [Wed, 1 Jun 2022 01:33:58 +0000 (18:33 -0700)] 
GEODE-10312: Fix the v1/v3 mismatch. (#7720)

* Remove SpringBootApplication annotation from swagger APIs.
* Change v1 to v3 in swagger api-docs URLs.

3 months agoRevert "GEODE-10020: For Ping task avoid registering new destination endpoint (#7515...
Nabarun Nag [Tue, 31 May 2022 18:50:38 +0000 (11:50 -0700)] 
Revert "GEODE-10020: For Ping task avoid registering new destination endpoint (#7515)" (#7741)

This reverts commit 18f0e9c55c3aeb14ceb3b1f07c07008b0126d6be.

3 months agoGEODE-10334: Refactor distributed tests (#7722)
Nabarun Nag [Sat, 28 May 2022 19:58:05 +0000 (12:58 -0700)] 
GEODE-10334: Refactor distributed tests (#7722)

* DistributedMulticastRegionWithUDPSecurityDUnitTest -> DistributedMulticastRegionWithUDPSecurityDistributedTest
* DistributedMulticastRegionDUnitTest ->  DistributedMulticastRegionDistributedTest
* Removed deprecated APIs
* Moved to new test framework.

4 months agoGEODE-10343: add ability to opt-in to windows-jdk8 and windows-jdk17 pr checks (...
Owen Nichols [Fri, 27 May 2022 20:58:24 +0000 (13:58 -0700)] 
GEODE-10343: add ability to opt-in to windows-jdk8 and windows-jdk17 pr checks (#7736)

(cherry picked from commit e79c6aa44bd6c4285dddd0c0715fe7ed41d24660)

4 months agoGEODE-10341: add note that snapshot includes in-cache and overflow entries (#7729)
Max Hufnagel [Fri, 27 May 2022 15:19:29 +0000 (08:19 -0700)] 
GEODE-10341: add note that snapshot includes in-cache and overflow entries (#7729)

4 months agoRevert "GEODE-10327: Overhaul GfshRule to kill processes and save artifacts for failu...
Kirk Lund [Thu, 26 May 2022 20:32:27 +0000 (13:32 -0700)] 
Revert "GEODE-10327: Overhaul GfshRule to kill processes and save artifacts for failures (#7571)" (#7728)

This reverts commit 774505e7c74cff8c572be1ec4f4bb2b0f3e1a091.

4 months agoGEODE-10311: fix a flaky test (#7709)
Jinmei Liao [Thu, 26 May 2022 16:29:47 +0000 (09:29 -0700)] 
GEODE-10311: fix a flaky test (#7709)

4 months agoGEODE-10277: For destroyed region don`t check size (#7653)
Mario Ivanac [Thu, 26 May 2022 05:09:04 +0000 (07:09 +0200)] 
GEODE-10277: For destroyed region don`t check size (#7653)

4 months agoGEODE-10327: Overhaul GfshRule to kill processes and save artifacts for failures...
Kirk Lund [Wed, 25 May 2022 18:09:24 +0000 (11:09 -0700)] 
GEODE-10327: Overhaul GfshRule to kill processes and save artifacts for failures (#7571)

PROBLEM

Tests that use GfshRule leave behind orphaned processes and do not save artifacts for debugging failures.

SOLUTION

GfshRule needs to cleanup all processes it forks. It also needs to save off all runtime artifacts such as logging, stats, pid files, diskstores to enable debugging of test failures.

DETAILS

Enhance GfshRule and modify all tests using it for proper debugging and to prevent test pollution.

Overhaul of GfshRule:

* kill ALL geode processes during cleanup
* use FolderRule to ensure all logs and files are properly saved off when a test fails
* extract GfshExecutor from JUnit rule code
* GfshExecutor allows a test to use any number of Geode versions with just one GfshRule
* add Gfsh log level support for easier debugging
* add support for new VmConfiguration to allow control over Geode and Java versions
* overhaul API of GfshRule and companion classes for better consistency and design

New FolderRule:

* replaces TemporaryFolder and saves off all content when a test fails
* creates root directory under the gradle worker instead of under temp

Update HTTP session caching module tests:

* use new FolderRule to save all artifacts when a test fails
* use nio Paths for filesystem variables

Update acceptance and upgrade tests that use GfshRule:

* use new improved GfshRule and GfshExecutor
* use new FolderRule instead of TemporaryFolder to save all artifacts when a test fails
* use --disable-default-server in tests with no clients
* fix flakiness of many tests by using random ports instead of default or hardcoded port values
* reformat GfshRule API usage in tests to improve readability and consistency
* add GfshStopper to provide common place to await process stop (stop locator/server is async so restarting with same ports is very prone to hitting BindExceptions)

Update ProcessUtils:

* extract NativeProcessUtils and make it public for direct use
* rename InternalProcessUtils as ProcessUtilsProvider and move to its own class
* rethrow IOExceptions as UncheckedIOExceptions
* fix flakiness in NativeProcessUtilsTest by moving findAvailablePid into test method

Minor changes:

* improve code formatting and readability
* convert from old io File to nio Path APIs as much as possible
* close output streams to fix filesystem issues on Windows

Fixes flaky test tickets:

* DeployJarAcceptanceTest GEODE-9615
* possibly other tests that uses GfshRule

NOTES

The jdk8, jdk17 and windows labels were used to run tests on more environments.

This PR contains mostly test and framework changes. The only product code altered is ServerLauncher and several classes in org.apache.geode.internal.process, all of which is in geode-core.

4 months agoGEODE-10020: For Ping task avoid registering new destination endpoint (#7515)
Mario Ivanac [Wed, 25 May 2022 05:54:26 +0000 (07:54 +0200)] 
GEODE-10020: For Ping task avoid registering new destination endpoint (#7515)

* GEODE-10020: For Ping task avoid registering new destination endpoint

4 months agoGEODE-10226: Added monitoring of async writer (#7667)
Mario Ivanac [Wed, 25 May 2022 05:32:44 +0000 (07:32 +0200)] 
GEODE-10226: Added monitoring of async writer (#7667)

* GEODE-10226: Added monitoring of async writer

4 months agoGEODE-10275: Bump spring from 5.3.19 to 5.3.20 (#7718)
Owen Nichols [Mon, 23 May 2022 22:39:32 +0000 (15:39 -0700)] 
GEODE-10275: Bump spring from 5.3.19 to 5.3.20 (#7718)

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.19 to 5.3.20

4 months agoGEODE-10328: close data store stats on cache close (#7716)
Darrel Schneider [Mon, 23 May 2022 20:57:04 +0000 (13:57 -0700)] 
GEODE-10328: close data store stats on cache close (#7716)

data store stats are now also closed on cache close or forced disconnect

4 months agoGEODE-10318: do not add duplicate entries in the locators list (#7703)
Jinmei Liao [Mon, 23 May 2022 16:37:58 +0000 (09:37 -0700)] 
GEODE-10318: do not add duplicate entries in the locators list (#7703)

* move locator parsing to api package

4 months agoGEODE-10297: Create SSLContext using default protocols (#7680)
Donal Evans [Mon, 23 May 2022 15:37:58 +0000 (08:37 -0700)] 
GEODE-10297: Create SSLContext using default protocols (#7680)

 - Modify SSLUtil to attempt to create SSLContext using the supported SSL
   contexts
 - Add WANSSLDistributedTest to test protocol/cipher combinations in WAN
   context
 - Do not hide exception when generating key pair in CertificateBuilder
 - Fix javadoc error in SocketCreator

Authored-by: Donal Evans <doevans@vmware.com>
4 months agoGEODE-9987: Refactored/Removal of deprecated API (#7303)
Nabarun Nag [Fri, 20 May 2022 21:48:51 +0000 (14:48 -0700)] 
GEODE-9987: Refactored/Removal of deprecated API (#7303)

* The tests were refactored to remove deprecated functions.
* This was done so that the starting and stopping of members are
handled correctly.

4 months agoRemoving myself from CODEOWNERS (#7708)
mhansonp [Fri, 20 May 2022 19:31:05 +0000 (12:31 -0700)] 
Removing myself from CODEOWNERS (#7708)

* Removing myself from CODEOWNERS and rebasing to pickup changes
* Adding Dale to dunit and junit ownership

4 months agoGEODE-10322: Run various Analyze Serialiable tests from IntelliJ (#7711)
Jens Deppe [Thu, 19 May 2022 23:51:04 +0000 (16:51 -0700)] 
GEODE-10322: Run various Analyze Serialiable tests from IntelliJ (#7711)

4 months agoGEODE-10320: Bump micrometer from 1.8.5 to 1.9.0 (#7706)
Owen Nichols [Thu, 19 May 2022 23:19:37 +0000 (16:19 -0700)] 
GEODE-10320: Bump micrometer from 1.8.5 to 1.9.0 (#7706)

Geode endeavors to update to the latest version of 3rd-party
dependencies on develop wherever possible.

This bump will also help Spring and JDK17 efforts.

4 months agoupdate CODEOWNERS: restore min two owners per area and fix other warnings (#7714)
Owen Nichols [Thu, 19 May 2022 22:05:06 +0000 (15:05 -0700)] 
update CODEOWNERS: restore min two owners per area and fix other warnings (#7714)

4 months agoGEODE-10310: Add disable reatempt on CacheClose (#7690)
Mario Ivanac [Thu, 19 May 2022 20:22:07 +0000 (22:22 +0200)] 
GEODE-10310: Add disable reatempt on CacheClose (#7690)

* GEODE-10310: Add disable reatempt on CacheClose

4 months agoGEODE-10319: Clear meters when closing the meter registry (#7705)
Dale Emery [Thu, 19 May 2022 17:08:09 +0000 (10:08 -0700)] 
GEODE-10319: Clear meters when closing the meter registry (#7705)

* GEODE-10319: Clear meters when closing the meter registry

* Close first, allowing registry to close meters

4 months agoRevert "GEODE-10294: Compare invalid token during putIfAbsent retry. (#7679)" (#7704)
Nabarun Nag [Thu, 19 May 2022 16:11:47 +0000 (09:11 -0700)] 
Revert "GEODE-10294: Compare invalid token during putIfAbsent retry. (#7679)" (#7704)

This reverts commit 4f4af2a303142729708a951cc8a93f562c3de8bc.

4 months agoGEODE-10315: remove unneeded add-opens (#7699)
Darrel Schneider [Wed, 18 May 2022 22:20:44 +0000 (15:20 -0700)] 
GEODE-10315: remove unneeded add-opens (#7699)

4 months agoGEODE-10115: fix javadoc (#7698)
Jinmei Liao [Wed, 18 May 2022 19:38:09 +0000 (12:38 -0700)] 
GEODE-10115: fix javadoc (#7698)

4 months agoGEODE-10290: GII requester should remove departed members (#7670)
Xiaojian Zhou [Wed, 18 May 2022 18:55:15 +0000 (11:55 -0700)] 
GEODE-10290: GII requester should remove departed members (#7670)

4 months agoGEODE-10313: User Guide: Add javadocs template variable (#7696)
Dave Barnes [Tue, 17 May 2022 13:39:13 +0000 (06:39 -0700)] 
GEODE-10313: User Guide: Add javadocs template variable (#7696)

4 months agoGEODE-10286: handle CancelException in PersistenceAdvisor.close (#7677)
Jinmei Liao [Mon, 16 May 2022 22:58:28 +0000 (15:58 -0700)] 
GEODE-10286: handle CancelException in PersistenceAdvisor.close (#7677)

4 months agoGEODE-10257: Upgrade tests can upgrade Java (#7686)
Dale Emery [Mon, 16 May 2022 22:22:52 +0000 (15:22 -0700)] 
GEODE-10257: Upgrade tests can upgrade Java (#7686)

Currently, upgrade tests upgrade from an old version of Geode to the
current version, both running on the test JVM's version of Java.

This commit enhances most upgrade tests so that they also upgrade from
an old Java version to a newer one, both running the current version of
Geode.

The new `VmConfiguration` class represents a configuration for a Geode
JVM, specifying both the Java version and the Geode version.

The new `VmConfigurations` class offers two factory methods to produce
lists of candidate configurations:
- `VmConfigurations.upgrades()` produces a list of "upgrade"
  configurations useful for most upgrade tests. Each upgrade
  configuration specifies either and old version of Geode or an old
  version of Java, but not both.
- `VmConfigurations.all()` produces a list of upgrades plus a
  configuration representing the current version of Geode and the test
  JVM's version of Java.

`VmConfigurations` also includes factory methods to create predicates to
filter configurations.

4 months agoGEODE-10309: Enable parallel tests for windows-gfsh-distributed-test (#7689)
Robert Houghton [Mon, 16 May 2022 17:47:45 +0000 (10:47 -0700)] 
GEODE-10309: Enable parallel tests for windows-gfsh-distributed-test (#7689)

Using the test-isolation plugin for parallelism, instead of Docker,
enables parallel testing on Windows for some jobs.

4 months agoGEODE-10294: Compare invalid token during putIfAbsent retry. (#7679)
Eric Shu [Fri, 13 May 2022 23:21:47 +0000 (16:21 -0700)] 
GEODE-10294: Compare invalid token during putIfAbsent retry. (#7679)

 * During putIfAbsent retry, comparing invalid token value when
   putIfAbsent of a null value instead.

4 months agoGEODE-10306 Fixing an order issue that can lead to problems when stopping (#7682)
mhansonp [Fri, 13 May 2022 21:31:31 +0000 (14:31 -0700)] 
GEODE-10306 Fixing an order issue that can lead to problems when stopping (#7682)

When stopping the cache server, the acceptor is last which should not be the case. It should be first so new data stops coming in.

4 months agoGEODE-10302: Increase call stack timeout for upgrade tests (#7691)
Dale Emery [Fri, 13 May 2022 21:31:17 +0000 (14:31 -0700)] 
GEODE-10302: Increase call stack timeout for upgrade tests (#7691)

To be 3h45m, 15 minutes shy of the newly increased task timeout.

4 months agoGEODE-10307: Doc changes needed for enable security-manager property (#7687)
Dave Barnes [Fri, 13 May 2022 20:20:56 +0000 (13:20 -0700)] 
GEODE-10307: Doc changes needed for enable security-manager property (#7687)

* GEODE-10307: Doc changes needed for enable security-manager property

4 months agoGEODE-10303: Increase memory for windows-gfsh-distributed-test (#7685)
Robert Houghton [Thu, 12 May 2022 23:20:12 +0000 (16:20 -0700)] 
GEODE-10303: Increase memory for windows-gfsh-distributed-test (#7685)

Authored-by: Robert Houghton <rhoughton@pivotal.io>
4 months agoGEODE-10302: Increase upgrade test timeout to 4h (#7683)
Dale Emery [Thu, 12 May 2022 23:09:58 +0000 (16:09 -0700)] 
GEODE-10302: Increase upgrade test timeout to 4h (#7683)

4 months agoGEODE-10299: update examples for creating dynamic regions (#7681)
Max Hufnagel [Wed, 11 May 2022 23:17:52 +0000 (16:17 -0700)] 
GEODE-10299: update examples for creating dynamic regions (#7681)

4 months agoGEODE-10271: ConnectionProxyJUnitTest cleanup (#7652)
Jinmei Liao [Wed, 11 May 2022 17:48:23 +0000 (10:48 -0700)] 
GEODE-10271: ConnectionProxyJUnitTest cleanup (#7652)

4 months agoGEODE-10283: Remove problematic buildSrc project, replacing with includeBuild project...
Robert Houghton [Wed, 11 May 2022 17:14:43 +0000 (10:14 -0700)] 
GEODE-10283: Remove problematic buildSrc project, replacing with includeBuild projects (#7600)

* Extract DependencyConstraints plugin from buildSrc
* Extract japicmp plugin customization from buildSrc
* Test isolation from buildSrc
* Disable jacoco on all test facets by default

Co-authored-by: Your Name <you@example.com>
4 months agoGEODE-10288: Fix property assignment syntax (#7678)
Dale Emery [Wed, 11 May 2022 15:48:30 +0000 (08:48 -0700)] 
GEODE-10288: Fix property assignment syntax (#7678)

4 months agoGEODE-10289: Argument file for JDK 17 (#7673)
Dale Emery [Tue, 10 May 2022 23:47:20 +0000 (16:47 -0700)] 
GEODE-10289: Argument file for JDK 17 (#7673)

* GEODE-10289: Argument file for JDK 17

The argument file was generated on Linux using OpenJDK 17.0.2

* Add arg file to assembly_content.txt