Skip to content

Develop merge#1

Open
marinov-code wants to merge 80 commits intomarinov-code:GEODE-10458from
apache:develop
Open

Develop merge#1
marinov-code wants to merge 80 commits intomarinov-code:GEODE-10458from
apache:develop

Conversation

@marinov-code
Copy link
Copy Markdown
Owner

For all changes:

  • Is there a JIRA ticket associated with this PR? Is it referenced in the commit message?

  • Has your PR been rebased against the latest commit within the target branch (typically develop)?

  • Is your initial contribution a single, squashed commit?

  • Does gradlew build run cleanly?

  • Have you written or updated unit tests to verify your changes?

  • If adding new dependencies to the code, are these dependencies licensed in a way that is compatible for inclusion under ASF 2.0?

hubgeter and others added 30 commits July 25, 2025 11:44
…utor. CompletableFuture.supplyAsync() uses the common ForkJoinPool, which may not have enough threads. (#7908)

* Those tests have a race condition: it assumes all tasks start before await() times out — which is not guaranteed.

* Replacing CompletableFuture.supplyAsync() with fixed thread pool executor. CompletableFuture.supplyAsync() uses the common ForkJoinPool, which may not have enough threads.

* Replacing CompletableFuture.supplyAsync() with fixed thread pool executor. CompletableFuture.supplyAsync() uses the common ForkJoinPool, which may not have enough threads.

---------

Co-authored-by: VENTSISLAV MARINOV <ventsislav.marinov@sas.com>
* ObjectSizerJUnitTest
* Migration of the build system and scripts from Gradle version 6.8.3 to version 7, as part of our strategic modernization initiative.
* WellKnownClassSizerJUnitTest

* Update geode-core/src/test/java/org/apache/geode/internal/size/WellKnownClassSizerJUnitTest.java

Co-authored-by: Arnout Engelen <arnout@engelen.eu>

* WellKnownClassSizerJUnitTest

---------

Co-authored-by: Arnout Engelen <arnout@engelen.eu>
* SizeClassOnceObjectSizerJUnitTest
…actRangeIndex, specify not to lookup old key, which is very expensive operation. It's actually broken and regression. All the tombstone entries are going to be NullToken and cause class cast exception for every single remove compare if looking up old key. There is no old key during initial tombstone image sync up from lead peer. (#7890)

Co-authored-by: Leon Finker <Leon.Finker@tsimagine.com>
* GEODE-10459: upgrade testcontainers

The acceptance tests appear to fail because `docker-compose` does not
exist. Likely the GHA machines have moved to the new `docker compose`
convention. This attempts upgrading testcontainers, as testcontainers is
what's starting docker compose, and newer versions indeed do it through
the `docker` executable.

* Change DockerComposeContainer to ComposeContainer

To use docker v2 instead of v1.

Also use new '-' separator naming convention
* Disallow GET requests to /management/commands endpoint
…urces (#7918)

* gfsh dependency

* commons-io-2.15.1



Co-authored-by: Jinwoo Hwang <JinwooHwang-SAS>
* commons-beanutil 1.11.0

* commons-beanutil 1.11.0
* Document update - Security section – Added the Security Model statement to the Security section and repositioned the entire section to the top-level hierarchy of the document for improved visibility.
Also added a link to the security pages in the “Apache Geode is 15 or Less” section to enhance accessibility to related resources.

* Fixed based on review - Links called directly. Fixed indentation issue. Fixed broken links.
* Document update - Added serialization to Security section
  Added serialization page under Security section
  Added link to serialization page from Security model page
  Added a bullet point to the Security Implementaton Overview page

* Document update - Added serialization to Security section
  Added serialization page under Security section
  Added link to serialization page from Security model page
  Added a bullet point to the Security Implementaton Overview page
  Removed Java version

* Document update:  Removed java version in serialization section
…patibility (#7927)

Upgraded the Gradle build system to version 7.3.3 to enable support for Java 17 and Jakarta EE 9. This change ensures compatibility with modern Java features and aligns the build infrastructure with current Jakarta EE standards.

The upgrade improves overall build stability across supported platforms. It also lays the groundwork for future enhancements involving newer JVM and EE specifications.
…ocumentation (#7932)

Found the issue trying to publish the 1.15.2 documentation
This commit streamlines the project's GitHub pull request template. Primarily, it removes white space between bullet items, which add unnecessary visual bulk to new pull requests. It also rewords a code comment and removes one that seems to reference deprecated systems.
Earlier due to the status of the project, we changed (#7900) it to
zero to allow commits without blocking. As we have now active commiters
we should revert the change.
* GEODE-10481: Implemenation Propoal

* Test Signed commit
…en ALL_UNICODE and DIGIT rules (#7928)

* GEODE-10463: Fix lexical nondeterminism warning in OQL grammar between ALL_UNICODE and DIGIT rules

Refactored ALL_UNICODE rule to exclude Unicode digit ranges that overlap
with DIGIT rule, eliminating lexical ambiguity in RegionNameCharacter.
The ALL_UNICODE range is now split into 15 non-overlapping segments that
exclude Arabic-Indic, Devanagari, Bengali, and other Unicode digit ranges.

This ensures deterministic tokenization where Unicode digits are always
matched by DIGIT rule while other Unicode characters use ALL_UNICODE.

* GEODE-10463: Add clarifying comment for ALL_UNICODE lexer rule

Add documentation comment to explain that the ALL_UNICODE character
class excludes Unicode digit ranges to prevent lexical nondeterminism
with the DIGIT rule in the OQL grammar lexer.
…le System Compatibility, and Test Infrastructure Modernization (#7930)

* GEODE-10465: Migrate Apache Geode to Java 17 with comprehensive compatibility fixes

- Upgrade sourceCompatibility and targetCompatibility from Java 8 to 17
- Add module system exports for jdk.compiler, java.management, and java.base APIs
- Integrate external JAXB dependencies (javax.xml.bind:jaxb-api, com.sun.xml.bind:jaxb-impl)
- Fix ClassCastException in QCompiler GROUP BY clause with TypeUtils.checkCast
- Modernize test infrastructure with Mockito type-safe mocking patterns
- Update Gradle wrapper to 7.3.3 and configure Java 17 JVM arguments
- Resolve Javadoc HTML5 compatibility and exclude legacy UnitTestDoclet
- Update CI/CD CodeQL workflow to use Java 17

Affected modules:
- Core build system (gradle.properties, geode-java.gradle)
- JAXB integration (geode-assembly, geode-gfsh, geode-lucene, geode-web-api, geode-junit)
- Query compilation (QCompiler.java type system compatibility)
- Test framework (LocatorClusterManagementServiceTest, UncheckedUtilsTest)

Testing: All 244 test tasks pass, clean compilation validated across all modules

This migration enables access to Java 17 LTS features, security improvements,
and performance optimizations while maintaining full backward compatibility.

* GEODE-10465: Fix JDK version in BUILDING.md

* GEODE-10465: Fix extra new line

* GEODE-10465: Upgrade to Java 17 in gradle.yml

* GEODE-10465: Fix error: package sun.security.x509 is not visible

* GEODE-10465: Fix the explicit export flag for the CI server

* GEODE-10465: Fix the explicit export flag for javadoc

* GEODE-10465: Fix ClassCastException for CliFunctionResult

* GEODE-10465: Update serialization analysis baselines for Java 17

- Updated sanctioned data serializable files for Java 17 compatibility
- Fixed serialization size mismatches in geode-core, geode-lucene,
  geode-junit, and geode-membership modules
- Addresses serialization size changes due to Java 17 optimizations:
  * Compact strings reducing serialization overhead
  * Improved DataOutputStream implementations
  * Optimized primitive type handling
- PageEntry toData size reduced from 94 to 91 bytes
- Multiple core classes show 1-3 byte reductions in serialization size
- No backward compatibility issues - wire protocol remains unchanged
- All serialization analysis integration tests now pass

The size reductions are beneficial optimizations from the JVM upgrade
that reduce memory usage and network bandwidth while maintaining
full compatibility with existing Geode deployments.

* GEODE-10465: Fix extra new line

* GEODE-10465: Add exception handling for WAN acceptance test

Add IgnoredException handling for network-related exceptions that occur
during WAN gateway setup in Docker Compose environment. These exceptions
are expected during the distributed system startup phase when gateway
senders attempt to connect to remote locators.

- Handle "could not get remote locator information" exceptions
- Handle GatewaySender-specific remote locator connection failures
- Improve test reliability by filtering expected connection errors

This change addresses intermittent test failures in the WAN acceptance
test suite when running with Docker Compose infrastructure.

* GEODE-10465: Add exception handling for WAN acceptance test

Add IgnoredException handling for network-related exceptions that occur
during WAN gateway setup in Docker Compose environment. These exceptions
are expected during the distributed system startup phase when gateway
senders attempt to connect to remote locators.

- Handle 'could not get remote locator information' exceptions
- Handle GatewaySender-specific remote locator connection failures
- Improve test reliability by filtering expected connection errors

This change addresses intermittent test failures in the WAN acceptance
test suite when running with Docker Compose infrastructure.

* GEODE-10465: Add exception handling for WAN acceptance test

Add IgnoredException handling for network-related exceptions that occur
during WAN gateway setup in Docker Compose environment. These exceptions
are expected during the distributed system startup phase when gateway
senders attempt to connect to remote locators.

- Handle "could not get remote locator information" exceptions
- Handle GatewaySender-specific remote locator connection failures
- Improve test reliability by filtering expected connection errors

This change addresses intermittent test failures in the WAN acceptance
test suite when running with Docker Compose infrastructure.

* Revert "GEODE-10465: Add exception handling for WAN acceptance test"

This reverts commit faba36d.

* Revert "GEODE-10465: Add exception handling for WAN acceptance test"

This reverts commit 6a283ab.

* Revert "GEODE-10465: Add exception handling for WAN acceptance test"

This reverts commit da0855d.

* GEODE-10465: Groovy VM plugin cache corruption with the error Could not initialize class org.codehaus.groovy.vmplugin.v7.Java7

* GEODE-10465: Groovy VM plugin cache corruption with the error Could not initialize class org.codehaus.groovy.vmplugin.v7.Java7

* GEODE-10465: Add comprehensive diagnostic logging to failing acceptance tests

Add detailed diagnostic logging to troubleshoot CI acceptance test failures
including Docker container setup, network connectivity, and SSL configuration
issues.

Changes:
- SeveralGatewayReceiversWithSamePortAndHostnameForSendersTest: Add logging for
  Docker container lifecycle, gateway sender creation, region setup, queue
  monitoring, and pool connection statistics to diagnose "could not get remote
  locator information" errors

- DualServerSNIAcceptanceTest: Add logging for multi-server Docker setup, SSL
  configuration, region connection attempts, and detailed error reporting to
  troubleshoot SNI routing failures

- SingleServerSNIAcceptanceTest: Add logging for single-server setup, client
  cache creation, SSL trust store configuration, and connection parameter
  tracking to diagnose "Unable to connect to any locators" errors

The diagnostic output will help identify root causes of:
- Gateway sender ping mechanism failures
- Docker network connectivity issues
- HAProxy SNI routing problems
- SSL/TLS handshake failures
- Locator discovery timeouts

All diagnostic messages use [DIAGNOSTIC] and [DIAGNOSTIC ERROR] prefixes
for easy filtering in CI logs. This logging is essential for resolving
the intermittent test failures affecting the CI build pipeline.

* GEODE-10465: Replace System.out.println with Log4j logging in acceptance tests

Replace console output with proper Log4j logging framework in Docker-based
acceptance tests to improve diagnostic visibility in CI environments.

Changes:
- SeveralGatewayReceiversWithSamePortAndHostnameForSendersTest.java:
  * Add Log4j Logger import and static logger instance
  * Add static initializer block with class loading diagnostics
  * Replace 20+ System.out.println/System.err.println with logger.info/error
  * Add try-finally block with IgnoredException management
  * Enhanced error diagnostics for gateway sender connectivity issues

- DualServerSNIAcceptanceTest.java:
  * Add Log4j Logger import and static logger instance
  * Replace System.out.println with logger.info for setup diagnostics
  * Replace System.err.println with logger.error for error conditions
  * Improve diagnostic messaging for Docker container setup

- SingleServerSNIAcceptanceTest.java:
  * Add Log4j Logger import and static logger instance
  * Replace System.out.println with logger.info throughout setup
  * Replace System.err.println with logger.error for cache creation failures
  * Maintain consistent diagnostic message format

These changes ensure diagnostic messages appear in DUnit test logs since
System.out.println output is isolated to individual JVM logs in distributed
test environments, while Log4j messages are properly aggregated in the
main test output for CI troubleshooting.

* Revert diagnostic logging changes from acceptance tests

Revert SeveralGatewayReceiversWithSamePortAndHostnameForSendersTest,
DualServerSNIAcceptanceTest, and SingleServerSNIAcceptanceTest back to
their original state before any diagnostic logging modifications.

This removes:
- Log4j logger imports and static instances
- Static initializer blocks
- All System.out.println replacement with logger.info/error
- Enhanced error diagnostics and try-finally blocks
- Diagnostic messaging throughout test methods

Files are now restored to clean baseline state.

* GEODE-10465: Fix addIgnoredException

* GEODE-10465: Fix addIgnoredException

* GEODE-10465: Java 17 migration

* GEODE-10465: Add ignored exception for Gateway Sender remote locator connection error

The SeveralGatewayReceiversWithSamePortAndHostnameForSendersTest was failing with a fatal error "GatewaySender ln could not get remote locator information for remote site 2". This is a known transient timing issue that occurs when gateway senders attempt to connect to remote locators during test setup before the remote locators are fully available.

Added IgnoredException for "could not get remote locator information for remote site" in the createGatewaySender method to handle this expected transient error, consistent with the pattern used by other WAN tests in the codebase.

This allows the gateway sender to eventually establish the connection once the remote locators are ready, while preventing test failures due to expected startup timing issues.

* GEODE-10465: Add ignored exception for Gateway Sender remote locator connection error

The SeveralGatewayReceiversWithSamePortAndHostnameForSendersTest was failing with a fatal error "GatewaySender ln could not get remote locator information for remote site 2". This is a known transient timing issue that occurs when gateway senders attempt to connect to remote locators during test setup before the remote locators are fully available.

Added IgnoredException for "could not get remote locator information for remote site" in the createGatewaySender method to handle this expected transient error, consistent with the pattern used by other WAN tests in the codebase.

This allows the gateway sender to eventually establish the connection once the remote locators are ready, while preventing test failures due to expected startup timing issues.

* GEODE-10465: Fix acceptance test failures due to Java 17 compatibility issues

Fixed two related issues causing acceptance test failures:

1. Gateway Sender Remote Locator Connection Error:
   - Added IgnoredException for "could not get remote locator information for remote site"
     in SeveralGatewayReceiversWithSamePortAndHostnameForSendersTest
   - This transient timing error occurs when gateway senders attempt to connect to remote
     locators during test setup before they are fully available
   - Solution follows the same pattern used by other WAN tests in the codebase

2. Gradle Version Compatibility Error:
   - Fixed GradleBuildWithGeodeCoreAcceptanceTest failing with NoClassDefFoundError for
     org.codehaus.groovy.vmplugin.v7.Java7
   - Changed from connector.useBuildDistribution() to connector.useGradleVersion("7.3.3")
   - Gradle 5.1.1 (default build distribution) is incompatible with Java 17, while
     Gradle 7.3.3 properly supports Java 17
   - Removed unnecessary workaround flags (--rerun-tasks, clean task) that were masking
     the root cause

Both fixes ensure acceptance tests run successfully on Java 17 by addressing
compatibility issues at their source rather than working around symptoms.

* GEODE-10465: Extra new line

* GEODE-10465: Extra new line

* GEODE-10465: Revert SeveralGatewayReceiversWithSamePortAndHostnameForSendersTest

* GEODE-10465: Fix Jetty 9 + Java 17 module system compatibility in distributedTest

Added JVM arguments to fix InaccessibleObjectException in Jetty9CachingClientServerTest.

The issue occurs because Jetty 9.4.57 attempts to access internal JDK classes
(jdk.internal.platform.cgroupv2.CgroupV2Subsystem) for system monitoring, but
Java 17's module system blocks access to these internal APIs by default.

Solution: Added --add-opens JVM arguments specifically for distributedTest tasks:
- --add-opens=java.base/jdk.internal.platform=ALL-UNNAMED
- --add-opens=java.base/jdk.internal.platform.cgroupv1=ALL-UNNAMED
- --add-opens=java.base/jdk.internal.platform.cgroupv2=ALL-UNNAMED

This allows Jetty to access the internal cgroup monitoring classes it needs
while maintaining security boundaries for other parts of the system.

* GEODE-10465: Fix Gradle compatibility and ArchUnit test failures for Java 17

This commit addresses two Java 17 compatibility issues:

1. **Fix deprecated Gradle syntax in acceptance test template**
   - Update geode-assembly test resource build.gradle:
     - compile() → implementation()
     - runtime() → runtimeOnly()
     - mainClassName → mainClass
   - Resolves GradleBuildWithGeodeCoreAcceptanceTest failure with
     "Could not find method compile()" error when using Gradle 7.3.3

2. **Fix CoreOnlyUsesMembershipAPIArchUnitTest architectural violations**
   - Replace layered architecture rule with direct dependency rules
   - Remove imports of membership packages moved to geode-membership module
   - Fixes "Layer 'api' is empty, Layer 'internal' is empty" errors
   - Maintains architectural constraint: geode-core classes cannot
     directly depend on GMS internal classes

These changes ensure compatibility with Gradle 7.3.3 and fix ArchUnit
tests affected by the geode-core/geode-membership module separation.

* GEODE-10465: Document Spotless exclusion for acceptance test gradle projects

Add documentation to explain why acceptance test gradle projects are
excluded from Spotless formatting. These standalone test applications
need hardcoded dependency versions for testing Geode integration in
real-world scenarios.

The exclusion prevents build failures that would occur if Spotless
tried to enforce the "no hardcoded versions" rule on test projects
that legitimately require specific dependency versions.

Also includes minor formatting improvements to CoreOnlyUsesMembershipAPIArchUnitTest
and updates log4j version in test gradle project from 2.12.0 to 2.17.2.

* GEODE-10465: Update assembly content validation for Java 17 javadoc changes

The AssemblyContentsIntegrationTest was failing after upgrading from Java 8
to Java 17 due to significant changes in javadoc generation format.

Java 9+ removed frame-based navigation and introduced modern HTML5 structure:
- Replaced allclasses-frame.html with allclasses-index.html
- Replaced package-list with element-list
- Removed all package-frame.html files
- Added search functionality with *-search-index.js files
- Added jQuery integration and legal notices
- Enhanced accessibility and responsive design

Updated assembly_content.txt to reflect the new javadoc file structure
generated by Java 17, ensuring integration tests pass while maintaining
full documentation coverage.

* GEODE-10465: Fix java.lang.AssertionError: Suspicious strings were written to the log during this run

* Revert "GEODE-10465: Fix java.lang.AssertionError: Suspicious strings were written to the log during this run"

This reverts commit f783780.

* GEODE-10465: Fix SingleServerSNIAcceptanceTest Java version compatibility and Docker networking

- Update Dockerfile to use Java 17 instead of Java 11 to match build environment
- Add network aliases for locator-maeve in docker-compose.yml for proper SNI routing
- Add HAProxy port mapping (15443:15443) and service dependency configuration

Resolves UnsupportedClassVersionError when running gfsh commands in Docker container
and ensures proper hostname resolution for SNI proxy tests.

* GEODE-10465: Remove extra new lines.

* GEODE-10465: Remove architectual chage note. This test was updated to fix the "Layer 'api' is empty, Layer 'internal' is empty" error. The original layered architecture approach failed because membership classes were moved from geode-core to geode-membership module, leaving empty layers. The solution uses direct dependency rules instead of layered architecture to enforce the same constraint: geode-core classes should not directly access GMS internals.

* GEODE-10465: Configure JDK compiler exports for Spotless and remove duplicates

* Add JDK compiler module exports to gradle.properties for Spotless removeUnusedImports
  - Required for Google Java Format to access JDK compiler internals
  - Must be global JVM args due to Spotless plugin architecture limitations
  - Documented why task-specific configuration is not possible

* Remove duplicate --add-exports from geode-java.gradle compilation tasks
  - Cleaned up redundant jdk.compiler exports already covered by gradle.properties
  - Retained necessary java.management and java.base exports for compilation
  - Removed duplicate sourceCompatibility/targetCompatibility settings

* Update expected-pom.xml files with javax.activation dependency
  - Add com.sun.activation:javax.activation to geode-core and geode-gfsh
  - Required for Java 17 compatibility (removed from JDK in Java 11+)
  - Minimal changes preserving original dependency order

This resolves Spotless formatting issues while maintaining clean build
configuration and CI compatibility.

* GEODE-10465: Fix integration tests for javax.activation dependency changes

Add javax.activation-1.2.0.jar to integration test expected dependencies
to fix failures caused by dependency artifact name changes from
javax.activation-api to javax.activation.

The build system now generates both javax.activation-1.2.0.jar and
javax.activation-api-1.2.0.jar in classpaths, so test expectation
files need to include both artifacts.

Changes:
- Add javax.activation-1.2.0.jar to dependency_classpath.txt
- Add javax.activation-1.2.0.jar to gfsh_dependency_classpath.txt
- Add javax.activation entry to expected_jars.txt
- Add javax.activation-api-1.2.0.jar entry to assembly_content.txt

Fixes: GeodeServerAllJarIntegrationTest, GfshDependencyJarIntegrationTest,
BundledJarsJUnitTest, and AssemblyContentsIntegrationTest failures.

* GEODE-10465: remove --add-exports

* Revert "GEODE-10465: remove --add-exports"

This reverts commit 1052c4f.

* GEODE-10465: replace ALL-UNNAMED with com.diffplug.spotless

* Revert "GEODE-10465: replace ALL-UNNAMED with com.diffplug.spotless"

This reverts commit 3950d50.
JinwooHwang and others added 30 commits December 4, 2025 03:38
…e System Encapsulation (#7954)

* Replace reflection-based UnsafeThreadLocal with WeakHashMap implementation

- Removed reflection access to ThreadLocal/ThreadLocalMap internals
- Implemented cross-thread value lookup using synchronized WeakHashMap
- Removed requirement for --add-opens=java.base/java.lang=ALL-UNNAMED
- WeakHashMap ensures terminated threads can be garbage collected
- Maintains same API and functionality for deadlock detection
- All existing tests pass without JVM flag changes

This eliminates the fragile reflection-based approach that required
special JVM flags and was vulnerable to Java module system changes.
The new implementation is safer, more maintainable, and works across
all Java versions without requiring internal access.

* Remove --add-opens=java.base/java.lang from test configuration

- Removed unnecessary JVM flag from geode-test.gradle line 185
- Flag no longer needed after UnsafeThreadLocal refactoring
- Tests now run with same security constraints as production
- All UnsafeThreadLocal and deadlock tests pass without the flag
- Validates that refactoring truly eliminated reflection dependency
…ncy Information (#7961)

* Correct license classification for Jakarta EE dependencies

- Moved jakarta.servlet v6.0.0 and jakarta.transaction v2.0.1 from CDDL to EPL 2.0 section
- These components use EPL 2.0 with GPL-2.0 + Classpath Exception, not CDDL 1.1

* GEODE-10511: Update istack-commons-runtime version from 4.0.1 to 4.1.1

- Aligns declared version with actual resolved version
- Eliminates version conflict resolution between 4.0.1 and 4.1.1
- Makes DependencyConstraints.groovy consistent with LICENSE file
- jaxb-core/jaxb-runtime 4.0.2 transitively requires 4.1.1

* GEODE-10511: Update test expectations for istack-commons-runtime 4.1.1

- Update geode-server-all dependency_classpath.txt
- Update geode-assembly assembly_content.txt to remove 4.0.1 reference
- Fixes integration test failures in both modules
…--add-opens Requirement (#7957)

* GEODE-10522: Eliminate reflection in VMStats50 to remove --add-opens requirement

Replace reflection-based access to platform MXBean methods with direct
interface casting, eliminating the need for
--add-opens=jdk.management/com.sun.management.internal=ALL-UNNAMED JVM flag.

Key Changes:
- Replaced Method.invoke() with direct calls to com.sun.management interfaces
- Removed setAccessible(true) calls that required module opening
- Updated to use OperatingSystemMXBean and UnixOperatingSystemMXBean directly
- Removed COM_SUN_MANAGEMENT_INTERNAL_OPEN flag from MemberJvmOptions
- Removed unused ClassPathLoader import
- Improved code clarity and type safety

Benefits:
- Completes Java Platform Module System (JPMS) compliance initiative
- Eliminates last remaining --add-opens flag requirement
- Improves security posture (no module violations)
- Better performance (no reflection overhead)
- Simpler, more maintainable code

Testing:
- All VMStats tests pass
- Tested without module flags
- Uses public, documented APIs from exported com.sun.management package

This completes the module compliance initiative:
- GEODE-10519: Eliminated java.base/java.lang opening
- GEODE-10520: Eliminated sun.nio.ch export
- GEODE-10521: Eliminated java.base/java.nio opening
- GEODE-10522: Eliminated jdk.management/com.sun.management.internal opening (this commit)

Apache Geode now requires ZERO module flags to run on Java 17+.

* Apply code formatting to VMStats50

- Fix import ordering (move com.sun.management imports after java.util imports)
- Remove trailing whitespace
- Apply consistent formatting throughout

* Address reviewer feedback: Add null check and improve error message

- Add null check for platformOsBean before calling getAvailableProcessors()
- Enhance error message to clarify impact on statistics vs core functionality
- Both changes suggested by @sboorlagadda in PR review

* Remove SUN_NIO_CH_EXPORT reference from JAVA_11_OPTIONS

- Fix compilation error after merging GEODE-10520 changes
- SUN_NIO_CH_EXPORT constant was removed but still referenced in list

* Fix duplicate JAVA_NIO_OPEN and missing JAVA_LANG_OPEN

- Remove duplicate JAVA_NIO_OPEN definition
- Add missing JAVA_LANG_OPEN constant
- Fix comment to correctly reference UnsafeThreadLocal for JAVA_LANG_OPEN
…nd Java 17 (#7953)

* docs: Update documentation for Jakarta EE 10 and Java 17

- Update Java version format from 1.8.0_121 to 17.0.16
- Update all Geode module versions from 1.0.0 to 2.0.0
- Replace javax.transaction-api with jakarta.transaction-api 2.0.1
- Update dependency versions (slf4j 2.0.17, log4j 2.17.2, jgroups 3.6.20, fastutil 8.5.8)
- Update config.yml: min_java_version='17', min_java_update='16'
- Fix Java version template expressions across 20+ documentation files
- Update WebLogic HTTP session management guide for Jakarta EE 10
- Update installation guides with Java 17 requirements

Breaking Changes:
- Minimum Java version now Java 17.0.16 (was Java 8u121)
- Jakarta EE 10 required (was Java EE 8)
- All javax.* packages replaced with jakarta.*

Testing:
- Verified peer-to-peer and client-server configurations
- Documentation builds successfully
- All quality checks passed (spotlessCheck, rat, checkPom, pmdMain)

* docs: Address review feedback - fix version consistency and consolidate tc Server deprecation notes

- Fix Tomcat version inconsistency: Changed CATALINA_HOME path from 10.1.49 to 10.1.30 to match example text
- Consolidate duplicate tc Server removal messages into single Note for clarity
- Improve documentation consistency and readability

* Fix log file path to be consistent with server path
The geode-core module declares jackson-dataformat-yaml as a dependency
without specifying a version, relying on DependencyConstraints.groovy
to provide it. However, DependencyConstraints.groovy was missing the
version constraint for com.fasterxml.jackson.dataformat.* artifacts.

This caused the published geode-core-2.0.0.pom to have jackson-dataformat-yaml
with no <version> tag, making the POM invalid according to Maven specification.
Maven refuses to process ANY transitive dependencies from an invalid POM,
which caused all dependencies (antlr, jopt-simple, micrometer-core, shiro-core,
jakarta.transaction-api, geode-management, geode-deployment-legacy, rmiio) to
not be pulled transitively.

This fix adds the missing dependency constraint for jackson-dataformat-yaml,
using jackson.version (2.17.0) to match other Jackson artifacts.

Issue reported by Leon during 2.0.0.RC2 testing.
…ecurity Model using ObjectInputFilter (JEP 290) (#7966)

* Add application-level security using ObjectInputFilter (JEP 290)

- Implement per-application deserialization filtering using standard JEP 290 API
- Add ObjectInputFilter parameter to ClassLoaderObjectInputStream constructor
- Update GemfireHttpSession to read filter configuration from ServletContext
- Add comprehensive security tests covering RCE and DoS prevention
- Add 52 tests validating gadget chain blocking and resource limits
- Add example configuration in session-testing-war web.xml

This provides application-level security isolation, allowing each web application
to define its own deserialization policy independent of cluster configuration.

* Add ObjectInputFilter security documentation for HTTP Session Management

- Add comprehensive security guide for configuring deserialization protection
- Document JEP 290 ObjectInputFilter pattern syntax and examples
- Include best practices, troubleshooting, and migration guidance
- Add navigation link in HTTP Session Management chapter overview

* Address PR review feedback: cache filter, add null check, add logging

- Implement filter caching using double-checked locking with volatile fields to eliminate race conditions and improve performance
- Add null check before setObjectInputFilter() for defensive programming
- Add INFO logging when filter is configured and WARN logging when not configured to improve security visibility

Addresses review comments by @sboorlagadda on PR #7966
#7972)

* Add explicit jakarta.annotation-api dependency to fix version conflict

jakarta.resource-api:2.1.0 declares a transitive dependency on
jakarta.annotation-api:2.1.0, but Spring Boot 3.3.4 (used by geode-gfsh)
requires jakarta.annotation-api:2.1.1. This causes Maven enforcer to
fail with a version conflict error.

By explicitly declaring jakarta.annotation-api as an api dependency
in geode-core, the published POM will include it with version 2.1.1
(from DependencyConstraints), which takes precedence over the
transitive 2.1.0 dependency from jakarta.resource-api.

Reported-by: Leon Finker

* Update expected POM to include jakarta.annotation-api dependency
#7975)

* GEODE-10543: Upgrade Log4j from 2.17.2 to 2.25.3 to remediate CVE-2025-68161

- Updated log4j version to 2.25.3 in DependencyConstraints.groovy
- Added log4j-core-test dependency for integration tests
- Migrated integration test imports to new log4j-core-test package structure:
  * org.apache.logging.log4j.junit → org.apache.logging.log4j.core.test.junit
  * org.apache.logging.log4j.test → org.apache.logging.log4j.core.test
- Added GraalVM annotation processor configuration to suppress compilation warnings
- Updated documentation references to log4j 2.25.3
- Updated test resource files with new JAR versions

All 21 integration tests migrated with zero logic changes.
Build successful with all tests passing.

* GEODE-10543: Fix GraalVM annotation processor options to apply only to main compilation

The annotation processor options were being applied to all JavaCompile tasks including integration tests, where the Log4j GraalVM processor is not triggered. This caused compilation warnings about unrecognized processor options.

Changed from tasks.withType(JavaCompile) to tasks.named('compileJava') to restrict the configuration to main source compilation only.

* GEODE-10543: Exclude AssertJ 3.27.3 from log4j-core-test to prevent NoSuchMethodError

Log4j 2.25.3's log4j-core-test transitively depends on AssertJ 3.27.3, but Geode's
custom AssertJ assertions (AbstractLogFileAssert) were built against AssertJ 3.22.0.
The CommonValidations.failIfEmptySinceActualIsNotEmpty method signature changed
between versions, causing NoSuchMethodError at runtime.

Exclude assertj-core from log4j-core-test dependency to force usage of 3.22.0,
ensuring binary compatibility with Geode's test infrastructure.
…VE-2026-1225 (#7982)

* GEODE-10555: Remediate CVEs

- Add global exclusion of ch.qos.logback to prevent transitive inclusion
- Remediate CVE-2024-12798, CVE-2024-12801, CVE-2025-11226, CVE-2026-1225
- Update expected POM files to reflect dependency changes
- All logging routed through Log4j 2 via log4j-slf4j-impl

* Update geode-server-all expected dependency classpath

Remove logback-classic and logback-core from expected dependencies

* Update assembly integration test expected files

- Remove logback-classic and logback-core from assembly_content.txt
- Remove logback from expected_jars.txt (bundled jars)
- Remove logback from gfsh_dependency_classpath.txt
)

* GEODE-10562 :
Testcases — Hybrid Model (Public CA servers, Private CA clients)

* GEODE-10562 :
Testcases — Hybrid Model (Public CA servers, Private CA clients)

* Add sun.security.util exports for CertificateBuilder

- Export sun.security.util package alongside sun.security.x509
- Required for ObjectIdentifier import in CertificateBuilder.java
- Added to both compileJava and javadoc tasks for Java 17 compatibility

* javadoc
* jackson upgrade

* Update integration test resources for dependency classpath and bundled jars: remove byte-buddy, update snakeyaml to 2.3

* Fix integration test snapshots: remove snakeyaml-2.2, add logback jars

* Fix integration test snapshot: remove incorrect logback entries
* GEODE-10568: Upgrade Jetty to 12.0.33

* GEODE-10568: Update integration test snapshots for Jetty 12.0.33
…2026-23903 remediation) (#7986)

* GEODE-10559: Upgrade Apache Shiro to 2.1.0; migrate APIs (CVE-2026-23903)

* GEODE-10559: update integration test resources after Shiro 2.1.0 bump

* Build an IniRealm

* include shiro

* remove shiro

* remove shiro

* Fix integration test snapshot: remove spurious logback-core entry
…ess is empty (#7984)

When JmxManagerBindAddress is not configured (empty string, meaning bind
all interfaces), ManagementAgent was setting the pulse.host system property
to the empty string. On Linux/Docker, an empty host in the JMX service URL
resolves to InetAddress.getLocalHost(), which returns the container bridge
IP (e.g. 172.17.0.2) rather than 127.0.0.1.

The embedded test keystore (trusted.keystore) only contains
IPAddress:127.0.0.1 as a Subject Alternative Name. The SSL handshake
between Pulse JMXDataUpdater and the JMX connector server therefore failed:

  SSLHandshakeException: No subject alternative names matching IP address
  172.17.0.2 found

This caused PulseSecurityWithSSLTest to consistently fail on CI (Ubuntu,
Liberica JDK 17, Docker) with BAD_CREDS while passing locally on macOS
with Zulu JDK 17 (where getLocalHost() returns 127.0.0.1).

Fix: when JmxManagerBindAddress is empty, pass localhost as the
pulse.host property so JMXDataUpdater connects to 127.0.0.1, which is
always covered by the certificate SAN.
…U Migration (#7989)

* documentation

* Sheila's review

* GEODE-10561: fix wording in CA topology section
…, geode-serialization, geode-deployment-legacy, geode-web-api) (#7983)

* GEODE-10534: Module 1:
geode-management              	RestTemplateClusterManagementServiceTransport.java
○ Update RestTemplateClusterManagementServiceTransport to remove deprecated API usage
○ Replaced deprecated SSLConnectionSocketFactory with DefaultClientTlsStrategy and setSSLSocketFactory with setTlsSocketStrategy
Issue 1.2: Apache Commons Lang StringUtils
  Index.java
     Updated removeStart with string manipulation code
Module 2: geode-serialization
   DSFIDSerializerImpl.java
      Updated deprecated getProxyClass with newProxyInstance with a no-op handler
   Module 3: geode-deployment-legacy
      LegacyClasspathServiceImpl.java
          Refactor proxy class creation to avoid deprecated Proxy.getProxyClass usage
          Replaced usage of deprecated Proxy.getProxyClass with Proxy.newProxyInstance to obtain proxy class
 Module 4: geode-web-api
       SwaggerConfig.java
         No changes, can be updated when we move to Spring Framework 6.2+ with UrlHandlerFilter

* Update DSFIDSerializerImpl.java

fixed space format issue
* GEODE-10533: Fix Deprecated APIs in geode-gfsh Module

* GEODE-10533: Fix Deprecated APIs in geode-gfsh Module

* GEODE-10533: Fix Deprecated APIs in geode-gfsh Module

* GEODE-10533: Fix Deprecated APIs in geode-gfsh Module

* GEODE-10533: Fix Deprecated APIs in geode-gfsh Module

---------

Co-authored-by: VENTSISLAV MARINOV <ventsislav.marinov@sas.com>
Co-authored-by: VENTSISLAV MARINOV <ventsislav.marinov@sas.com>
Replace 2.0.0 with 2.0.1 in old versions and set as default Benchmarks baseline on develop
to enable rolling upgrade tests from 2.0.1

The serialization version has not changed between 2.0.0 and 2.0.1,
so there should be no need to keep both
…n for Logs (#8005)

Upgrade Apache Log4j from 2.25.3 to 2.25.4 to remediate CVE-2026-34478
(CVSS 6.9 MEDIUM).

VULNERABILITY:
  Log4j Core's Rfc5424Layout (versions 2.21.0 through 2.25.3) is
  vulnerable to log injection via CRLF sequences due to undocumented
  renames of security-relevant configuration attributes (CWE-117,
  CWE-684). Two issues affect users of stream-based syslog services:
  - The newLineEscape attribute was silently renamed, disabling newline
    escaping for TCP framing (RFC 6587) and exposing CRLF injection.
  - The useTlsMessageFormat attribute was silently renamed, silently
    downgrading TLS framing (RFC 5425) to unframed TCP without newline
    escaping.

REMEDIATION:
  Updated all Log4j dependency references from 2.25.3 to 2.25.4 across
  dependency constraints, build files, documentation, and test resources.

References:
  https://nvd.nist.gov/vuln/detail/CVE-2026-34478
  apache/logging-log4j2#4074
  https://logging.apache.org/security.html#CVE-2026-34478
…8007)

Single-word spelling correction in the Javadoc of IndexConditioningHelper.

No functional changes.

Signed-off-by: Sai Asish Y <say.apm35@gmail.com>
* build: make cacheable test inputs relocatable

* Disabled caching for all test tasks, ecept for :test, as they have utputs.upToDateWhen { false } configured, which effectively disabled caching anyway

* build: fix missing task dependencies causing cache disabled for correctness

- Add sourcesJar.dependsOn(generateGrammarSource) in geode-core so the
  sourcesJar task declares its dependency on antlr-generated sources.
- Replace taskGraph.whenReady combineReports wiring with eager subprojects
  configuration so Gradle sees the dependency declarations during
  configuration phase instead of after task graph finalization.

* build: use mustRunAfter instead of dependsOn for combineReports

dependsOn forces all test tasks to execute when combineReports runs.
The original whenReady wiring never triggered tasks because the graph
was already sealed. mustRunAfter preserves ordering without forcing
execution.

* build: revert eager combineReports wiring, fix geode-old-versions only

reportOn creates implicit file dependencies that trigger all test tasks.
Revert to original whenReady block and instead add the missing
finalizedBy/mustRunAfter wiring in geode-old-versions, which is the
only project that lacks it since it doesn't apply geode-test.gradle.

* build: exclude geode-old-versions version dirs from rat task inputs

The version subdirectories (1.10.0, 1.11.0, etc.) are empty Gradle
project directories with no source files. Gradle creates them during
the build, so their presence differs between clean builds in different
locations, causing a rat task cache miss.

* build: clean geode-old-versions subproject dirs to fix rat cache miss

The version subdirectories (1.10.0, 1.11.0, etc.) are not in git but
get created during the build as Gradle project directories. On
subsequent clean builds from the same location, these dirs persist
after clean and cause rat task input fingerprint mismatches. Add a
deleteOldGeodeVersions task finalized by clean to remove them.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.