Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
107 commits
Select commit Hold shift + click to select a range
d838cee
GEODE-10466: Complete Jakarta EE 10, Spring 6.x, Spring Shell 3.x, Ap…
JinwooHwang Oct 15, 2025
67a7086
Remove obsolete Spring Shell 1.x converter classes
JinwooHwang Oct 15, 2025
5b55b27
Remove obsolete Tomcat 6/7/8/9 modules and classes
JinwooHwang Oct 15, 2025
9b4a942
Remove test files for deleted Spring Shell 1.x converters and Tomcat6…
JinwooHwang Oct 15, 2025
2364c6e
feat: Add comprehensive CSRF protection configuration and documentation
JinwooHwang Oct 15, 2025
6cd277b
test: Add CSRF tokens to Pulse integration tests
JinwooHwang Oct 15, 2025
1f36a0e
Fix OAuth test to handle 404 response and add comprehensive documenta…
JinwooHwang Oct 15, 2025
418bad2
Fix BundledJarsJUnitTest and GfshDependencyJarIntegrationTest
JinwooHwang Oct 15, 2025
acf5cc0
Fix ConfigurePDXCommandIntegrationTest: Quote parameter values contai…
JinwooHwang Oct 15, 2025
53768c0
Fix ConfigurePDXCommandIntegrationTest for Spring Shell 3.x parameter…
JinwooHwang Oct 15, 2025
6ab2c1c
Security: Enable CSRF protection for OAuth2 authentication in Pulse
JinwooHwang Oct 15, 2025
d52a286
Security: Fix path injection vulnerabilities in CLI commands
JinwooHwang Oct 15, 2025
2328f8f
Security: Fix XSS vulnerabilities in Pulse notification system
JinwooHwang Oct 15, 2025
bad0a21
Security: Fix URL redirection vulnerability in StartPulseCommand
JinwooHwang Oct 15, 2025
9dbb4c9
Security: Complete CodeQL vulnerability resolution - comprehensive fixes
JinwooHwang Oct 15, 2025
6147360
Fix Lucene 9.x IndexOptions conflict with _point suffix for numeric f…
JinwooHwang Oct 16, 2025
7331f4e
Fix JTA system property timing and Lucene OOM errors
JinwooHwang Oct 16, 2025
11af8f4
Fix GfshCommandRedactionAcceptanceTest by enabling gfsh file logging
JinwooHwang Oct 16, 2025
c96567f
Apply spotless formatting fixes
JinwooHwang Oct 16, 2025
7d03e1a
Update sanctioned serializables for MBeanServerFileAccessController$A…
JinwooHwang Oct 16, 2025
762b2cd
Fix PutCommandIntegrationTest for Spring Shell 3.x help format
JinwooHwang Oct 16, 2025
fc9bb21
Fix HelperIntegrationTest for Spring Shell 3.x help output format
JinwooHwang Oct 16, 2025
6996912
Fix ignoreJTA system property handling in Jakarta migration
JinwooHwang Oct 16, 2025
723239d
Fix MultiUserAPIDUnitTest suspect string failure
JinwooHwang Oct 16, 2025
5c654e9
Fix region path normalization for MBean lookup in colocated-with vali…
JinwooHwang Oct 16, 2025
218989c
fix: Update ShowMetricsDUnitTest for Spring Shell 3.x migration
JinwooHwang Oct 17, 2025
afdba44
fix: Correct command name in ResumeAsyncEventQueueDispatcherDUnitTest
JinwooHwang Oct 17, 2025
2ae52d3
fix: Add SEPARATOR prefix to region name in RemoveCommandDUnitTest
JinwooHwang Oct 17, 2025
7cf7c44
fix: Correct command name in ListAsyncEventQueuesCommandDUnitTest
JinwooHwang Oct 17, 2025
738576d
fix: Handle null indexName in DestroyIndexCommand.updateConfigForGroup
JinwooHwang Oct 17, 2025
656fefb
feat: Add ConfigPropertyConverter for Spring Shell 3.x migration
JinwooHwang Oct 17, 2025
6d61f20
fix: Use normalizedTemplateRegion in error message for consistent reg…
JinwooHwang Oct 17, 2025
4307e73
fix: Normalize prColocatedWith to include separator in persisted conf…
JinwooHwang Oct 17, 2025
b37811d
fix: Normalize region path in DefineIndexCommand for index creation
JinwooHwang Oct 17, 2025
6e366dc
GEODE-10466: Fix command name in CreateAsyncEventQueueCommandDUnitTest
JinwooHwang Oct 17, 2025
0adf023
GEODE-10466: Fix array parameter parsing for AlterQueryServiceCommand
JinwooHwang Oct 17, 2025
17d2def
Fix AlterQueryServiceCommandTest to use semicolon delimiter for autho…
JinwooHwang Oct 17, 2025
1505d31
GEODE-10466: Convert inline comments to block comments in build.gradl…
JinwooHwang Oct 17, 2025
aad8b3b
Fix SwaggerManagementVerificationIntegrationTest failure
JinwooHwang Oct 17, 2025
bdb0a65
GEODE-10466: Fix REST API date serialization after Jakarta migration
JinwooHwang Oct 18, 2025
c601a62
GEODE-10466: Fix REST API trailing slash handling in Spring 6.x
JinwooHwang Oct 18, 2025
e9d2273
Fix Pulse test failure by exempting /pulseUpdate from CSRF protection
JinwooHwang Oct 18, 2025
b60fc4f
GEODE-10466: Fix GlobalTXTimeoutMonitor thread leak in locator shutdown
JinwooHwang Oct 18, 2025
0d2e1f6
GEODE-10466: Fix authentication bypass in Pulse password validation
JinwooHwang Oct 18, 2025
0ccabf5
GEODE-10466: Fix ManagementService internal region access for Jakarta…
JinwooHwang Oct 18, 2025
f848ff5
GEODE-10466: Fix SSL certificate rotation acceptance tests by adding …
JinwooHwang Oct 18, 2025
3d3f01a
GEODE-10466: Fix NullPointerException in EchoCommand
JinwooHwang Oct 18, 2025
67c0c87
GEODE-10466: Fix StandaloneClientManagementAPIAcceptanceTest for Jaka…
JinwooHwang Oct 18, 2025
f3286b7
GEODE-10466: Fix alter gateway-sender filter clearing for Spring Shel…
JinwooHwang Oct 18, 2025
cccc166
feat(GEODE-10466): Add Jetty 12 support for Jakarta EE 10 compatibility
JinwooHwang Oct 19, 2025
34f2b1d
GEODE-10466: Migrate session management tests from Tomcat 6-9 to Tomc…
JinwooHwang Oct 19, 2025
62eb04e
GEODE-10466: Fix cluster configuration initialization race condition …
JinwooHwang Oct 19, 2025
3f94643
GEODE-10466: Update expected-pom.xml for java-jq version 2.0.0
JinwooHwang Oct 19, 2025
43e0daf
GEODE-10466: Add multipart configuration to geode-web-management servlet
JinwooHwang Oct 19, 2025
2ebdec4
GEODE-10466: Fix HTTP Basic Authentication in ClusterManagementServic…
JinwooHwang Oct 19, 2025
83a70e9
GEODE-10466: Add IgnoredException for expected auth failures in Devel…
JinwooHwang Oct 19, 2025
06f2406
GEODE-10466: Clean up Jetty 12 SSL migration code
JinwooHwang Oct 19, 2025
900c865
GEODE-10466: Fix GeodeClientClusterManagementSecurityTest suspicious …
JinwooHwang Oct 19, 2025
19368e8
GEODE-10466: Fix ManagementRestSecurityConfigurationDUnitTest suspici…
JinwooHwang Oct 19, 2025
3600417
GEODE-10466: Add SerializableRegionRedundancyStatusImpl to serializat…
JinwooHwang Oct 19, 2025
161e239
GEODE-10466: Fix CreateMappingCommand parameter validation with multi…
JinwooHwang Oct 19, 2025
3ef6c39
GEODE-10466: Fix PoolProperty[] parameter conversion for Spring Shell…
JinwooHwang Oct 19, 2025
7a1ad8d
Fix Javadoc formatting in MultipartConfig
JinwooHwang Oct 19, 2025
937e646
Update sanctioned serializables for Jakarta EE migration
JinwooHwang Oct 20, 2025
b6971b0
Fix PostgreSQL JDBC connection failure in Jakarta EE migration
JinwooHwang Oct 20, 2025
db430a5
Fix URL parameter stripping to preserve non-credential parameters
JinwooHwang Oct 20, 2025
334a3d6
Fix multipart configuration for JAR deployment functionality
JinwooHwang Oct 20, 2025
36e59fa
security: Fix path traversal vulnerabilities (CWE-22) in DeployCommand
JinwooHwang Oct 21, 2025
3201520
security: Fix path traversal vulnerabilities in ImportClusterConfigur…
JinwooHwang Oct 21, 2025
8cc5e6d
GEODE-10466: Upgrade Micrometer to 1.14.0
JinwooHwang Oct 23, 2025
805f0ac
Increase heap size for geode-lucene integration tests to 6g
JinwooHwang Oct 23, 2025
10b7188
Update dependency_classpath.txt for geode-server-all integration test
JinwooHwang Oct 23, 2025
c9db394
Increase heap size to 8g and enable forking for geode-lucene integrat…
JinwooHwang Oct 23, 2025
bf28686
Fork every 5 tests to prevent memory accumulation in geode-lucene
JinwooHwang Oct 23, 2025
4ae8d1f
Upgrade dependencies: commons-io 2.15.1->2.18.0, joda-time 2.10.14->2…
JinwooHwang Oct 24, 2025
4d04c50
Upgrade dependencies: httpcore5-h2 5.2.4->5.3.4, httpcore5 5.2.4->5.3…
JinwooHwang Oct 24, 2025
effd14c
Upgrade slf4j-api from 1.7.32 to 2.0.17
JinwooHwang Oct 24, 2025
92c1fad
Merge upstream/develop into GEODE-10466
JinwooHwang Oct 24, 2025
b84b234
Update integration test resources for Jakarta Activation changes
JinwooHwang Oct 24, 2025
464223d
Update assembly_content.txt for Jakarta Activation changes
JinwooHwang Oct 24, 2025
132bead
Upgrade commons-io from 2.18.0 to 2.19.0
JinwooHwang Oct 27, 2025
b69105a
Merge branch 'apache:develop' into develop
JinwooHwang Oct 27, 2025
1499f2d
Merge develop into GEODE-10466 to resolve conflicts
JinwooHwang Oct 27, 2025
c8da5d0
Fix javax.xml.bind dependency in geode-wan
JinwooHwang Oct 27, 2025
7d1f8cb
Migrate GFSH logging from JUL to Log4j2 and complete Spring Shell 3.x…
JinwooHwang Oct 28, 2025
48ee421
GEODE-10466: Fix RebalanceCommandAcceptanceTest JMX disconnection errors
JinwooHwang Oct 28, 2025
78680ec
Merge upstream/develop into GEODE-10466
JinwooHwang Oct 28, 2025
c43ea30
Add IgnoredException for connection cleanup messages in DUnit tests
JinwooHwang Oct 28, 2025
5633708
Remove redundant IgnoredException from RebalanceCommandAcceptanceTest
JinwooHwang Oct 28, 2025
58f5e3a
Apply spotless formatting to DataSource test files
JinwooHwang Oct 28, 2025
dfd96eb
Log GFSH disconnection at INFO level during normal shutdown
JinwooHwang Oct 28, 2025
e6cc1de
GEODE-10466: Fix 'No longer connected' errors during test cleanup
JinwooHwang Oct 29, 2025
55c674c
GEODE-10466: Fix 'No longer connected' errors in JUnit4DistributedTes…
JinwooHwang Oct 29, 2025
362d3a3
GEODE-10466: Move IgnoredException to @Before method
JinwooHwang Oct 29, 2025
26665cc
GEODE-10466: Fix IgnoredException ordering in ClusterStartupRule
JinwooHwang Oct 29, 2025
c281fa8
GEODE-10466: Fix IgnoredException pattern mismatch
JinwooHwang Oct 29, 2025
3dc9c93
GEODE-10466: Proper fix - downgrade log level in headless mode
JinwooHwang Oct 29, 2025
c62e457
GEODE-10466: Remove obsolete IgnoredException workarounds from connec…
JinwooHwang Oct 29, 2025
6b7c3bd
GEODE-10466: Apply spotless formatting to Gfsh.java
JinwooHwang Oct 29, 2025
b31d4c1
GEODE-10466: Apply spotless formatting
JinwooHwang Oct 29, 2025
64366cc
GEODE-10466: Fix ConnectCommandTest mock setup
JinwooHwang Oct 29, 2025
958cb32
GEODE-10466: Spring Shell 3.x migration - completion providers and co…
JinwooHwang Oct 30, 2025
7b831e2
Fix HelperIntegrationTest: only add option help text when not blank
JinwooHwang Oct 30, 2025
c704cbe
Fix WanCommandAutoCompletionIntegrationTest: expect leading space in …
JinwooHwang Oct 30, 2025
1743205
Merge branch 'develop' into GEODE-10466
JinwooHwang Oct 31, 2025
ac746dd
Update dependency_classpath.txt for geode-server-all integration test
JinwooHwang Nov 1, 2025
b2ab1bf
Merge upstream/develop: Update slf4j-api to 2.0.17 for Jakarta EE 10 …
JinwooHwang Nov 4, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .github/workflows/gradle.yml
Original file line number Diff line number Diff line change
Expand Up @@ -435,7 +435,7 @@ jobs:
geode-connectors:distributedTest \
geode-old-client:distributedTest \
extensions:geode-modules:distributedTest \
extensions:geode-modules-tomcat8:distributedTest --console=plain --no-daemon
extensions:geode-modules-tomcat10:distributedTest --console=plain --no-daemon
- uses: actions/upload-artifact@v4
if: failure()
with:
Expand Down
4 changes: 3 additions & 1 deletion TESTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,10 @@ Tests are broken up into five types - unit, integration, distributed, acceptance
`./gradlew distributedTest`
* Acceptance tests: test Geode from end user perspective
`./gradlew acceptanceTest`
* Upgrade tests: test compatibility between versions of Geode and rolling upgrades
* Upgrade tests: test backwards compatibility and rolling upgrades between versions of Geode
`./gradlew upgradeTest`

**Note**: Rolling upgrades are **NOT supported** across the Jakarta EE 10 migration boundary (pre-migration → post-migration) for Tomcat session replication due to the javax.servlet → jakarta.servlet API incompatibility. Rolling upgrades within the same API era continue to work.

## Running Individual Tests
To run an individual test, you can either
Expand Down
6 changes: 3 additions & 3 deletions boms/geode-all-bom/src/test/resources/expected-pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@
<dependency>
<groupId>com.arakelian</groupId>
<artifactId>java-jq</artifactId>
<version>1.3.0</version>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>com.carrotsearch.randomizedtesting</groupId>
Expand Down Expand Up @@ -195,7 +195,7 @@
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-core</artifactId>
<version>1.9.1</version>
<version>1.14.0</version>
</dependency>
<dependency>
<groupId>io.swagger.core.v3</groupId>
Expand Down Expand Up @@ -415,7 +415,7 @@
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.36</version>
<version>2.0.17</version>
</dependency>
<dependency>
<groupId>org.springframework.hateoas</groupId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,32 +37,52 @@ class DependencyConstraints {
deps.put("commons-lang3.version", "3.18.0")
deps.put("commons-validator.version", "1.7")
deps.put("fastutil.version", "8.5.8")
deps.put("javax.activation.version", "1.2.0")
deps.put("javax.transaction-api.version", "1.3")
deps.put("jakarta.activation.version", "2.1.3")
deps.put("jakarta.transaction.version", "2.0.1")
deps.put("jakarta.xml.bind.version", "4.0.2")
deps.put("jakarta.servlet.version", "6.0.0")
deps.put("jakarta.resource.version", "2.1.0")
deps.put("jakarta.mail.version", "2.1.2")
deps.put("jakarta.annotation.version", "2.1.1")
deps.put("jakarta.ejb.version", "4.0.1")
deps.put("jgroups.version", "3.6.20.Final")
deps.put("log4j.version", "2.17.2")
deps.put("micrometer.version", "1.9.1")
deps.put("log4j-slf4j2-impl.version", "2.23.1")
deps.put("micrometer.version", "1.14.0")
deps.put("shiro.version", "1.13.0")
deps.put("slf4j-api.version", "1.7.36")
deps.put("slf4j-api.version", "2.0.17")
deps.put("jakarta.transaction-api.version", "2.0.1")
deps.put("jboss-modules.version", "1.11.0.Final")
deps.put("jackson.version", "2.17.0")
deps.put("jackson.databind.version", "2.17.0")
deps.put("springshell.version", "1.2.0.RELEASE")
deps.put("springframework.version", "5.3.21")
// Spring Framework 6.x Migration
deps.put("springshell.version", "3.3.3")
deps.put("springframework.version", "6.1.14")
deps.put("springboot.version", "3.3.5")
deps.put("springsecurity.version", "6.3.4")
deps.put("springhateoas.version", "2.3.3")
deps.put("springldap.version", "3.2.7")
deps.put("springdoc.version", "2.6.0")

// These version numbers are used in testing various versions of tomcat and are consumed explicitly
// in will be called explicitly in the relevant extensions module, and respective configurations
// in geode-assembly.gradle. Moreover, dependencyManagement does not seem to play nicely when
// specifying @zip in a dependency, the manner in which we consume them in custom configurations.
// This would possibly be corrected if they were proper source sets.
// Note: Tomcat 6/7/8/9 versions kept for upgradeTest (downloads old Geode releases)
deps.put("tomcat6.version", "6.0.37")
deps.put("tomcat7.version", "7.0.109")
deps.put("tomcat8.version", "8.5.66")
deps.put("tomcat9.version", "9.0.62")
// Jakarta EE - Tomcat 10.1+ and 11.x support
deps.put("tomcat10.version", "10.1.33")
deps.put("tomcat11.version", "11.0.11")

// The jetty version is also hard-coded in geode-assembly:test
// at o.a.g.sessions.tests.GenericAppServerInstall.java
deps.put("jetty.version", "9.4.57.v20241219")
// Jetty 12.0.x for Jakarta EE 10 (Servlet 6.0) compatibility
// Jetty 12 reorganized modules under ee10, ee9, ee8 packages
deps.put("jetty.version", "12.0.27")

// These versions are referenced in test.gradle, which is aggressively injected into all projects.
deps.put("junit.version", "4.13.2")
Expand All @@ -88,7 +108,8 @@ class DependencyConstraints {
// informal, inter-group dependencySet
api(group: 'antlr', name: 'antlr', version: get('antlr.version'))
api(group: 'cglib', name: 'cglib', version: get('cglib.version'))
api(group: 'com.arakelian', name: 'java-jq', version: '1.3.0')
// GEODE-10466: Requires native library support for both x86_64 and ARM Mac
api(group: 'com.arakelian', name: 'java-jq', version: '2.0.0')
api(group: 'com.carrotsearch.randomizedtesting', name: 'randomizedtesting-runner', version: '2.7.9')
api(group: 'com.github.davidmoten', name: 'geo', version: '0.8.0')
api(group: 'com.github.stefanbirkner', name: 'system-rules', version: '1.19.0')
Expand All @@ -100,10 +121,12 @@ class DependencyConstraints {
api(group: 'com.nimbusds', name:'nimbus-jose-jwt', version:'8.11')
// Pinning transitive dependency from spring-security-oauth2 to clean up our licenses.
api(group: 'com.nimbusds', name: 'oauth2-oidc-sdk', version: '8.9')
api(group: 'com.sun.activation', name: 'javax.activation', version: get('javax.activation.version'))
api(group: 'jakarta.activation', name: 'jakarta.activation-api', version: get('jakarta.activation.version'))
api(group: 'com.sun.istack', name: 'istack-commons-runtime', version: '4.0.1')
api(group: 'com.sun.mail', name: 'javax.mail', version: '1.6.2')
api(group: 'com.sun.xml.bind', name: 'jaxb-impl', version: '2.3.2')
api(group: 'jakarta.mail', name: 'jakarta.mail-api', version: get('jakarta.mail.version'))
api(group: 'jakarta.xml.bind', name: 'jakarta.xml.bind-api', version: get('jakarta.xml.bind.version'))
api(group: 'org.glassfish.jaxb', name: 'jaxb-runtime', version: '4.0.2')
api(group: 'org.glassfish.jaxb', name: 'jaxb-core', version: '4.0.2')
api(group: 'com.tngtech.archunit', name:'archunit-junit4', version: '0.15.0')
api(group: 'com.zaxxer', name: 'HikariCP', version: '4.0.3')
api(group: 'commons-beanutils', name: 'commons-beanutils', version: '1.11.0')
Expand All @@ -124,13 +147,14 @@ class DependencyConstraints {
api(group: 'io.swagger.core.v3', name: 'swagger-annotations', version: '2.2.22')
api(group: 'org.hdrhistogram', name: 'HdrHistogram', version: '2.2.2')
api(group: 'it.unimi.dsi', name: 'fastutil', version: get('fastutil.version'))
api(group: 'javax.annotation', name: 'javax.annotation-api', version: '1.3.2')
api(group: 'javax.annotation', name: 'jsr250-api', version: '1.0')
api(group: 'javax.ejb', name: 'ejb-api', version: '3.0')
api(group: 'javax.mail', name: 'javax.mail-api', version: '1.6.2')
api(group: 'javax.resource', name: 'javax.resource-api', version: '1.7.1')
api(group: 'javax.servlet', name: 'javax.servlet-api', version: '3.1.0')
api(group: 'javax.xml.bind', name: 'jaxb-api', version: '2.3.1')
api(group: 'jakarta.annotation', name: 'jakarta.annotation-api', version: get('jakarta.annotation.version'))
api(group: 'jakarta.annotation', name: 'jsr250-api', version: '1.0')
api(group: 'jakarta.ejb', name: 'jakarta.ejb-api', version: get('jakarta.ejb.version'))
api(group: 'jakarta.mail', name: 'jakarta.mail-api', version: get('jakarta.mail.version'))
api(group: 'jakarta.resource', name: 'jakarta.resource-api', version: get('jakarta.resource.version'))
api(group: 'jakarta.servlet', name: 'jakarta.servlet-api', version: get('jakarta.servlet.version'))
api(group: 'jakarta.transaction', name: 'jakarta.transaction-api', version: get('jakarta.transaction.version'))
api(group: 'jakarta.xml.bind', name: 'jakarta.xml.bind-api', version: get('jakarta.xml.bind.version'))
api(group: 'joda-time', name: 'joda-time', version: '2.12.7')
api(group: 'junit', name: 'junit', version: get('junit.version'))
api(group: 'mx4j', name: 'mx4j-tools', version: '3.0.1')
Expand All @@ -146,15 +170,25 @@ class DependencyConstraints {
api(group: 'org.apache.commons', name: 'commons-lang3', version: get('commons-lang3.version'))
api(group: 'org.apache.commons', name: 'commons-text', version: 1.9)
api(group: 'org.apache.derby', name: 'derby', version: '10.14.2.0')
// Apache HttpComponents 5.x - Modern HTTP client with HTTP/2 support
api(group: 'org.apache.httpcomponents.client5', name: 'httpclient5', version: '5.4.4')
api(group: 'org.apache.httpcomponents.core5', name: 'httpcore5', version: '5.3.4')
api(group: 'org.apache.httpcomponents.core5', name: 'httpcore5-h2', version: '5.3.4')
// Legacy HttpComponents 4.x (keep temporarily during migration, remove after complete)
api(group: 'org.apache.httpcomponents', name: 'httpclient', version: '4.5.13')
api(group: 'org.apache.httpcomponents', name: 'httpcore', version: '4.4.15')
api(group: 'org.apache.shiro', name: 'shiro-core', version: get('shiro.version'))
api(group: 'org.assertj', name: 'assertj-core', version: '3.22.0')
api(group: 'org.awaitility', name: 'awaitility', version: '4.2.0')
api(group: 'org.buildobjects', name: 'jproc', version: '2.8.0')
api(group: 'org.codehaus.cargo', name: 'cargo-core-uberjar', version: '1.9.12')
api(group: 'org.codehaus.cargo', name: 'cargo-core-uberjar', version: '1.10.24')
// Jetty 12: Core server module stays in org.eclipse.jetty
api(group: 'org.eclipse.jetty', name: 'jetty-server', version: get('jetty.version'))
api(group: 'org.eclipse.jetty', name: 'jetty-webapp', version: get('jetty.version'))
// Jetty 12: Servlet and webapp modules moved to ee10 package for Jakarta EE 10
api(group: 'org.eclipse.jetty.ee10', name: 'jetty-ee10-servlet', version: get('jetty.version'))
api(group: 'org.eclipse.jetty.ee10', name: 'jetty-ee10-webapp', version: get('jetty.version'))
// Jetty 12: Annotations module for ServletContainerInitializer discovery
api(group: 'org.eclipse.jetty.ee10', name: 'jetty-ee10-annotations', version: get('jetty.version'))
api(group: 'org.eclipse.persistence', name: 'javax.persistence', version: '2.2.1')
api(group: 'org.httpunit', name: 'httpunit', version: '1.7.3')
api(group: 'org.iq80.snappy', name: 'snappy', version: '0.5')
Expand All @@ -166,9 +200,11 @@ class DependencyConstraints {
api(group: 'org.postgresql', name: 'postgresql', version: '42.2.8')
api(group: 'org.skyscreamer', name: 'jsonassert', version: '1.5.0')
api(group: 'org.slf4j', name: 'slf4j-api', version: get('slf4j-api.version'))
api(group: 'org.springframework.hateoas', name: 'spring-hateoas', version: '1.5.0')
api(group: 'org.springframework.ldap', name: 'spring-ldap-core', version: '2.4.0')
api(group: 'org.springframework.shell', name: 'spring-shell', version: get('springshell.version'))
api(group: 'org.apache.logging.log4j', name: 'log4j-slf4j2-impl', version: get('log4j-slf4j2-impl.version'))
api(group: 'jakarta.transaction', name: 'jakarta.transaction-api', version: get('jakarta.transaction-api.version'))
api(group: 'org.springframework.hateoas', name: 'spring-hateoas', version: get('springhateoas.version'))
api(group: 'org.springframework.ldap', name: 'spring-ldap-core', version: get('springldap.version'))
api(group: 'org.springframework.shell', name: 'spring-shell-starter', version: get('springshell.version'))
api(group: 'org.testcontainers', name: 'testcontainers', version: '1.21.3')
api(group: 'pl.pragmatists', name: 'JUnitParams', version: '1.1.0')
api(group: 'xerces', name: 'xercesImpl', version: '2.12.0')
Expand Down Expand Up @@ -206,8 +242,8 @@ class DependencyConstraints {
entry('junit-quickcheck-generators')
}

dependencySet(group: 'org.springdoc', version: '1.6.8') {
entry('springdoc-openapi-ui')
dependencySet(group: 'org.springdoc', version: get('springdoc.version')) {
entry('springdoc-openapi-starter-webmvc-ui')
}

dependencySet(group: 'mx4j', version: '3.0.2') {
Expand All @@ -223,9 +259,13 @@ class DependencyConstraints {
entry('log4j-slf4j-impl')
}

dependencySet(group: 'org.apache.lucene', version: '6.6.6') {
entry('lucene-analyzers-common')
entry('lucene-analyzers-phonetic')
// Apache Lucene 9.12.3 - Upgraded for Jakarta EE 10 compatibility
// Previous: 6.6.6 (2017) - Incompatible with modern Jakarta EE stack
// Lucene 9.x requires Java 11+ and is designed for Jakarta EE compatibility
// NOTE: Artifact names changed in Lucene 9.x: analyzers-* → analysis-*
dependencySet(group: 'org.apache.lucene', version: '9.12.3') {
entry('lucene-analysis-common') // was: lucene-analyzers-common
entry('lucene-analysis-phonetic') // was: lucene-analyzers-phonetic
entry('lucene-core')
entry('lucene-queryparser')
entry('lucene-test-framework')
Expand All @@ -252,7 +292,7 @@ class DependencyConstraints {
entry('selenium-support')
}

dependencySet(group: 'org.springframework.security', version: '5.6.5') {
dependencySet(group: 'org.springframework.security', version: get('springsecurity.version')) {
entry('spring-security-config')
entry('spring-security-core')
entry('spring-security-ldap')
Expand All @@ -264,22 +304,30 @@ class DependencyConstraints {
}

dependencySet(group: 'org.springframework', version: get('springframework.version')) {
// Spring 6.x requires explicit spring-aop dependency declaration
// Previously implicit via transitive dependencies, now must be declared explicitly.
// Missing this causes ClassNotFoundException: org.springframework.aop.TargetSource
// during Spring context initialization, preventing HTTP service and WAN gateway startup.
entry('spring-aop')
entry('spring-aspects')
entry('spring-beans')
entry('spring-context')
entry('spring-core')
entry('spring-expression')
entry('spring-messaging')
entry('spring-oxm')
entry('spring-test')
entry('spring-tx')
entry('spring-web')
entry('spring-webmvc')
}

dependencySet(group: 'org.springframework.boot', version: '2.6.7') {
dependencySet(group: 'org.springframework.boot', version: get('springboot.version')) {
entry('spring-boot-starter')
entry('spring-boot-starter-jetty')
entry('spring-boot-starter-validation')
entry('spring-boot-starter-web')
entry('spring-boot-autoconfigure')
}

dependencySet(group: 'org.jetbrains', version: '23.0.0') {
Expand Down
1 change: 0 additions & 1 deletion build-tools/scripts/src/main/groovy/geode-rat.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,6 @@ rat {
'wrapper/**',
'**/build/**',
'**/build-*/**',
'**/bin/**',
'.buildinfo',
'**/release-features.rendered', // just for jenkins

Expand Down
25 changes: 24 additions & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,30 @@ allprojects {

repositories {
mavenCentral()
maven { url "https://repo.spring.io/release" }
maven {
url "https://jakarta.oss.sonatype.org/content/repositories/releases/"
name "Jakarta EE Releases"
}
}

// CRITICAL: Fix for Log4j/SLF4J circular binding conflict introduced during Jakarta/Spring Boot 3.x migration
//
// Root Cause:
// - Geode uses Log4j Core directly and includes 'log4j-slf4j-impl' (routes SLF4J calls → Log4j)
// - Spring Boot 3.x includes 'spring-boot-starter-logging' which brings in 'log4j-to-slf4j' (routes Log4j calls → SLF4J)
// - Having BOTH creates a circular binding: SLF4J → Log4j → SLF4J
//
// Symptoms:
// - ClassCastException: org.apache.logging.slf4j.SLF4JLogger cannot be cast to org.apache.logging.log4j.core.Logger
// - ClassCastException: org.apache.logging.slf4j.SLF4JLoggerContext cannot be cast to org.apache.logging.log4j.core.LoggerContext
// - Occurs in Log4jLoggingProvider.getRootLoggerContext() when LogManager.getRootLogger() returns SLF4J logger instead of Log4j logger
//
// Solution:
// Exclude 'log4j-to-slf4j' globally. Geode's logging architecture requires Log4j Core to be the primary logging implementation,
// with SLF4J calls being routed TO Log4j (via log4j-slf4j-impl), not the other way around.
//
configurations.all {
exclude group: 'org.apache.logging.log4j', module: 'log4j-to-slf4j'
}

buildRoot = buildRoot.trim()
Expand Down
Loading
Loading