[
https://issues.apache.org/jira/browse/GEODE-10527?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Jinwoo Hwang updated GEODE-10527:
---------------------------------
Description:
h2. Summary
Migrate Apache Geode's Spring Framework dependency from version 6.x to version
7.x to leverage the latest features, performance improvements, and security
updates.
h2. Background
Apache Geode currently uses Spring Framework 6 across various modules including
geode-core, geode-web, and extensions. Spring Framework 7 introduces
significant improvements and modernizations that would benefit the Geode
ecosystem.
h2. Motivation
* {*}Security{*}: Spring Framework 7 includes latest security patches and
vulnerability fixes
* {*}Performance{*}: Enhanced performance optimizations and reduced memory
footprint
* {*}Modern Java Support{*}: Better support for Java 21+ features and virtual
threads
* {*}Deprecation Management{*}: Address deprecated APIs from Spring Framework
6 before they are removed
* {*}Ecosystem Alignment{*}: Stay current with the broader Spring ecosystem
(Spring Boot 4.x will require Spring Framework 7)
* {*}Long-term Support{*}: Spring Framework 6 support ends June 2026;
proactive migration ensures continued support
||Version||End of OSS Support||
|7.0.x|2027-06|
|6.2.x|2026-06|
|6.1.x|2025-06|
|6.0.x|2024-06|
h2. Scope
* Upgrade Spring Framework dependencies from 6 to 7 in all Geode modules
* Update Spring Data dependencies to compatible versions
* Modify code to address breaking changes and deprecated APIs
* Update integration with Spring-based features:
** Spring Data GemFire/Geode integration
** Spring Cache abstraction support
** Spring transaction management
** Dependency injection and bean configuration
* Update build scripts (Gradle) to manage new dependency versions
* Verify backward compatibility with existing Geode applications using Spring
* Update documentation and examples
* Update test suites to work with Spring Framework 7
h2. Technical Details
h3. Affected Modules
* {{geode-core}} - Core Spring integration
* {{geode-web}} - Spring MVC integration
* {{geode-web-api}} - REST API with Spring
* {{geode-web-management}} - Management REST API
* {{extensions/geode-modules}} - Spring Session integration
* {{geode-dunit}} - Test infrastructure
* {{geode-junit}} - Test utilities
h3. Known Breaking Changes (Spring 6 → 7)
* Baseline requirements: Java 17+
* Jakarta EE 10+ requirement (Jakarta Servlet 6.0, Jakarta Persistence 3.1)
* Removal of APIs deprecated in Spring Framework 6.x
* Changes to autowiring behavior and bean lifecycle
* Updates to web/servlet infrastructure
* Modifications to testing framework
h3. Migration Steps
# *Dependency Analysis*
** Audit all Spring Framework dependencies across modules
** Identify version conflicts with transitive dependencies
** Review Spring Data compatibility matrix
# *Build Configuration Updates*
** Update {{gradle/dependency-management.gradle}} or equivalent
** Set Spring Framework version to 7
** Update related Spring dependencies (Spring Data, Spring Security, etc.)
# *Code Compilation Fixes*
** Address compilation errors from API changes
** Replace deprecated method calls
** Update import statements for relocated classes
# *Runtime Fixes*
** Fix bean configuration issues
** Address autowiring changes
** Update web configuration
# *Test Updates*
** Fix failing unit tests
** Update integration tests
** Fix DUnit tests using Spring infrastructure
# *Documentation*
** Update developer documentation
** Update user-facing documentation about Spring integration
** Update examples and sample applications
# *Validation*
** Run full test suite
** Perform integration testing with Spring Data Geode
** Test with sample Spring Boot applications
h2. Testing Strategy
h3. Unit Testing
* Ensure all existing unit tests pass with Spring Framework 7
* Add new tests for migration-specific changes
* Verify dependency injection behavior
h3. Integration Testing
* Test Spring Data Geode integration
* Test Spring Cache abstraction with Geode
* Test Spring transaction management
* Test web endpoints and REST APIs
h3. Compatibility Testing
* Test with different Java versions (17, 21)
* Test with different Spring Data versions
* Test backward compatibility with existing client applications
h3. Performance Testing
* Benchmark startup time
* Measure memory usage
* Compare throughput with Spring 6 baseline
h2. Risks and Mitigations
||Risk||Impact||Probability||Mitigation||
|Breaking changes in Spring APIs|High|Medium|Thorough testing and staged
rollout|
|Incompatibility with Spring Data Geode|High|Medium|Coordinate with Spring Data
Geode team|
|Third-party dependency conflicts|Medium|High|Careful dependency management and
version pinning|
|Community adoption issues|Medium|Low|Clear migration guide and deprecation
warnings|
|Performance regressions|Medium|Low|Performance testing before release|
h2. Success Criteria
* All Geode modules successfully compile with Spring Framework 7
* All existing tests pass (unit, integration, DUnit)
* No performance regressions compared to Spring Framework 6
* Successful integration with Spring Data Geode 7.x compatible version
* Documentation updated with migration notes
* At least one release candidate tested by community
h2. Timeline Estimate
* {*}Phase 1 - Investigation & Planning{*}: 2-4 weeks
** Dependency analysis
** Breaking changes assessment
** Migration plan finalization
* {*}Phase 2 - Implementation{*}: 8-12 weeks
** Build configuration updates
** Code changes
** Initial testing
* {*}Phase 3 - Testing & Validation{*}: 4-6 weeks
** Comprehensive testing
** Performance validation
** Community feedback
* {*}Phase 4 - Documentation & Release{*}: 2-4 weeks
** Documentation updates
** Release notes
** Migration guide
{*}Total Estimated Duration{*}: 16-26 weeks
h2. Dependencies
* Spring Data release compatible with Spring Framework 7
* Jakarta EE 10+ compatible servlet container updates
h2. References
* [Spring Framework 7.0 Release
Notes|https://github.com/spring-projects/spring-framework/wiki/Release-Notes]
* [Spring Framework 7.0 Migration
Guide|https://github.com/spring-projects/spring-framework/wiki/Upgrading-to-Spring-Framework-7.x]
* [Spring Data Release Train|https://spring.io/projects/spring-data]
* [Apache Geode Spring Integration
Documentation|https://geode.apache.org/docs/]
h2. Additional Notes
This upgrade should be coordinated with:
* The Geode community for feedback and testing
* Major version release planning (breaking changes may require Geode major
version bump)
was:
h2. Summary
Migrate Apache Geode's Spring Framework dependency from version 6.x to version
7.x to leverage the latest features, performance improvements, and security
updates.
h2. Background
Apache Geode currently uses Spring Framework 6 across various modules including
geode-core, geode-web, and extensions. Spring Framework 7 introduces
significant improvements and modernizations that would benefit the Geode
ecosystem.
h2. Motivation
* {*}Security{*}: Spring Framework 7 includes latest security patches and
vulnerability fixes
* {*}Performance{*}: Enhanced performance optimizations and reduced memory
footprint
* {*}Modern Java Support{*}: Better support for Java 21+ features and virtual
threads
* {*}Deprecation Management{*}: Address deprecated APIs from Spring Framework
6 before they are removed
* {*}Ecosystem Alignment{*}: Stay current with the broader Spring ecosystem
(Spring Boot 4.x will require Spring Framework 7)
* {*}Long-term Support{*}: Spring Framework 6 will eventually reach
end-of-life; proactive migration ensures continued support
h2. Scope
* Upgrade Spring Framework dependencies from 6 to 7 in all Geode modules
* Update Spring Data dependencies to compatible versions
* Modify code to address breaking changes and deprecated APIs
* Update integration with Spring-based features:
** Spring Data GemFire/Geode integration
** Spring Cache abstraction support
** Spring transaction management
** Dependency injection and bean configuration
* Update build scripts (Gradle) to manage new dependency versions
* Verify backward compatibility with existing Geode applications using Spring
* Update documentation and examples
* Update test suites to work with Spring Framework 7
h2. Technical Details
h3. Affected Modules
* {{geode-core}} - Core Spring integration
* {{geode-web}} - Spring MVC integration
* {{geode-web-api}} - REST API with Spring
* {{geode-web-management}} - Management REST API
* {{extensions/geode-modules}} - Spring Session integration
* {{geode-dunit}} - Test infrastructure
* {{geode-junit}} - Test utilities
h3. Known Breaking Changes (Spring 6 → 7)
* Baseline requirements: Java 17+
* Jakarta EE 10+ requirement (Jakarta Servlet 6.0, Jakarta Persistence 3.1)
* Removal of APIs deprecated in Spring Framework 6.x
* Changes to autowiring behavior and bean lifecycle
* Updates to web/servlet infrastructure
* Modifications to testing framework
h3. Migration Steps
# *Dependency Analysis*
** Audit all Spring Framework dependencies across modules
** Identify version conflicts with transitive dependencies
** Review Spring Data compatibility matrix
# *Build Configuration Updates*
** Update {{gradle/dependency-management.gradle}} or equivalent
** Set Spring Framework version to 7
** Update related Spring dependencies (Spring Data, Spring Security, etc.)
# *Code Compilation Fixes*
** Address compilation errors from API changes
** Replace deprecated method calls
** Update import statements for relocated classes
# *Runtime Fixes*
** Fix bean configuration issues
** Address autowiring changes
** Update web configuration
# *Test Updates*
** Fix failing unit tests
** Update integration tests
** Fix DUnit tests using Spring infrastructure
# *Documentation*
** Update developer documentation
** Update user-facing documentation about Spring integration
** Update examples and sample applications
# *Validation*
** Run full test suite
** Perform integration testing with Spring Data Geode
** Test with sample Spring Boot applications
h2. Testing Strategy
h3. Unit Testing
* Ensure all existing unit tests pass with Spring Framework 7
* Add new tests for migration-specific changes
* Verify dependency injection behavior
h3. Integration Testing
* Test Spring Data Geode integration
* Test Spring Cache abstraction with Geode
* Test Spring transaction management
* Test web endpoints and REST APIs
h3. Compatibility Testing
* Test with different Java versions (17, 21)
* Test with different Spring Data versions
* Test backward compatibility with existing client applications
h3. Performance Testing
* Benchmark startup time
* Measure memory usage
* Compare throughput with Spring 6 baseline
h2. Risks and Mitigations
||Risk||Impact||Probability||Mitigation||
|Breaking changes in Spring APIs|High|Medium|Thorough testing and staged
rollout|
|Incompatibility with Spring Data Geode|High|Medium|Coordinate with Spring Data
Geode team|
|Third-party dependency conflicts|Medium|High|Careful dependency management and
version pinning|
|Community adoption issues|Medium|Low|Clear migration guide and deprecation
warnings|
|Performance regressions|Medium|Low|Performance testing before release|
h2. Success Criteria
* All Geode modules successfully compile with Spring Framework 7
* All existing tests pass (unit, integration, DUnit)
* No performance regressions compared to Spring Framework 6
* Successful integration with Spring Data Geode 7.x compatible version
* Documentation updated with migration notes
* At least one release candidate tested by community
h2. Timeline Estimate
* {*}Phase 1 - Investigation & Planning{*}: 2-4 weeks
** Dependency analysis
** Breaking changes assessment
** Migration plan finalization
* {*}Phase 2 - Implementation{*}: 8-12 weeks
** Build configuration updates
** Code changes
** Initial testing
* {*}Phase 3 - Testing & Validation{*}: 4-6 weeks
** Comprehensive testing
** Performance validation
** Community feedback
* {*}Phase 4 - Documentation & Release{*}: 2-4 weeks
** Documentation updates
** Release notes
** Migration guide
{*}Total Estimated Duration{*}: 16-26 weeks
h2. Dependencies
* Spring Data release compatible with Spring Framework 7
* Jakarta EE 10+ compatible servlet container updates
h2. References
* [Spring Framework 7.0 Release
Notes|https://github.com/spring-projects/spring-framework/wiki/Release-Notes]
* [Spring Framework 7.0 Migration
Guide|https://github.com/spring-projects/spring-framework/wiki/Upgrading-to-Spring-Framework-7.x]
* [Spring Data Release Train|https://spring.io/projects/spring-data]
* [Apache Geode Spring Integration
Documentation|https://geode.apache.org/docs/]
h2. Additional Notes
This upgrade should be coordinated with:
* The Geode community for feedback and testing
* Major version release planning (breaking changes may require Geode major
version bump)
> Migration of Spring Framework from Version 6 to Version 7
> ---------------------------------------------------------
>
> Key: GEODE-10527
> URL: https://issues.apache.org/jira/browse/GEODE-10527
> Project: Geode
> Issue Type: Improvement
> Reporter: Jinwoo Hwang
> Assignee: Jinwoo Hwang
> Priority: Major
> Fix For: 2.1.0
>
>
> h2. Summary
> Migrate Apache Geode's Spring Framework dependency from version 6.x to
> version 7.x to leverage the latest features, performance improvements, and
> security updates.
> h2. Background
> Apache Geode currently uses Spring Framework 6 across various modules
> including geode-core, geode-web, and extensions. Spring Framework 7
> introduces significant improvements and modernizations that would benefit the
> Geode ecosystem.
> h2. Motivation
> * {*}Security{*}: Spring Framework 7 includes latest security patches and
> vulnerability fixes
> * {*}Performance{*}: Enhanced performance optimizations and reduced memory
> footprint
> * {*}Modern Java Support{*}: Better support for Java 21+ features and
> virtual threads
> * {*}Deprecation Management{*}: Address deprecated APIs from Spring
> Framework 6 before they are removed
> * {*}Ecosystem Alignment{*}: Stay current with the broader Spring ecosystem
> (Spring Boot 4.x will require Spring Framework 7)
> * {*}Long-term Support{*}: Spring Framework 6 support ends June 2026;
> proactive migration ensures continued support
> ||Version||End of OSS Support||
> |7.0.x|2027-06|
> |6.2.x|2026-06|
> |6.1.x|2025-06|
> |6.0.x|2024-06|
> h2. Scope
> * Upgrade Spring Framework dependencies from 6 to 7 in all Geode modules
> * Update Spring Data dependencies to compatible versions
> * Modify code to address breaking changes and deprecated APIs
> * Update integration with Spring-based features:
> ** Spring Data GemFire/Geode integration
> ** Spring Cache abstraction support
> ** Spring transaction management
> ** Dependency injection and bean configuration
> * Update build scripts (Gradle) to manage new dependency versions
> * Verify backward compatibility with existing Geode applications using Spring
> * Update documentation and examples
> * Update test suites to work with Spring Framework 7
> h2. Technical Details
> h3. Affected Modules
> * {{geode-core}} - Core Spring integration
> * {{geode-web}} - Spring MVC integration
> * {{geode-web-api}} - REST API with Spring
> * {{geode-web-management}} - Management REST API
> * {{extensions/geode-modules}} - Spring Session integration
> * {{geode-dunit}} - Test infrastructure
> * {{geode-junit}} - Test utilities
> h3. Known Breaking Changes (Spring 6 → 7)
> * Baseline requirements: Java 17+
> * Jakarta EE 10+ requirement (Jakarta Servlet 6.0, Jakarta Persistence 3.1)
> * Removal of APIs deprecated in Spring Framework 6.x
> * Changes to autowiring behavior and bean lifecycle
> * Updates to web/servlet infrastructure
> * Modifications to testing framework
> h3. Migration Steps
> # *Dependency Analysis*
> ** Audit all Spring Framework dependencies across modules
> ** Identify version conflicts with transitive dependencies
> ** Review Spring Data compatibility matrix
> # *Build Configuration Updates*
> ** Update {{gradle/dependency-management.gradle}} or equivalent
> ** Set Spring Framework version to 7
> ** Update related Spring dependencies (Spring Data, Spring Security, etc.)
> # *Code Compilation Fixes*
> ** Address compilation errors from API changes
> ** Replace deprecated method calls
> ** Update import statements for relocated classes
> # *Runtime Fixes*
> ** Fix bean configuration issues
> ** Address autowiring changes
> ** Update web configuration
> # *Test Updates*
> ** Fix failing unit tests
> ** Update integration tests
> ** Fix DUnit tests using Spring infrastructure
> # *Documentation*
> ** Update developer documentation
> ** Update user-facing documentation about Spring integration
> ** Update examples and sample applications
> # *Validation*
> ** Run full test suite
> ** Perform integration testing with Spring Data Geode
> ** Test with sample Spring Boot applications
> h2. Testing Strategy
> h3. Unit Testing
> * Ensure all existing unit tests pass with Spring Framework 7
> * Add new tests for migration-specific changes
> * Verify dependency injection behavior
> h3. Integration Testing
> * Test Spring Data Geode integration
> * Test Spring Cache abstraction with Geode
> * Test Spring transaction management
> * Test web endpoints and REST APIs
> h3. Compatibility Testing
> * Test with different Java versions (17, 21)
> * Test with different Spring Data versions
> * Test backward compatibility with existing client applications
> h3. Performance Testing
> * Benchmark startup time
> * Measure memory usage
> * Compare throughput with Spring 6 baseline
> h2. Risks and Mitigations
> ||Risk||Impact||Probability||Mitigation||
> |Breaking changes in Spring APIs|High|Medium|Thorough testing and staged
> rollout|
> |Incompatibility with Spring Data Geode|High|Medium|Coordinate with Spring
> Data Geode team|
> |Third-party dependency conflicts|Medium|High|Careful dependency management
> and version pinning|
> |Community adoption issues|Medium|Low|Clear migration guide and deprecation
> warnings|
> |Performance regressions|Medium|Low|Performance testing before release|
> h2. Success Criteria
> * All Geode modules successfully compile with Spring Framework 7
> * All existing tests pass (unit, integration, DUnit)
> * No performance regressions compared to Spring Framework 6
> * Successful integration with Spring Data Geode 7.x compatible version
> * Documentation updated with migration notes
> * At least one release candidate tested by community
> h2. Timeline Estimate
> * {*}Phase 1 - Investigation & Planning{*}: 2-4 weeks
> ** Dependency analysis
> ** Breaking changes assessment
> ** Migration plan finalization
> * {*}Phase 2 - Implementation{*}: 8-12 weeks
> ** Build configuration updates
> ** Code changes
> ** Initial testing
> * {*}Phase 3 - Testing & Validation{*}: 4-6 weeks
> ** Comprehensive testing
> ** Performance validation
> ** Community feedback
> * {*}Phase 4 - Documentation & Release{*}: 2-4 weeks
> ** Documentation updates
> ** Release notes
> ** Migration guide
> {*}Total Estimated Duration{*}: 16-26 weeks
> h2. Dependencies
> * Spring Data release compatible with Spring Framework 7
> * Jakarta EE 10+ compatible servlet container updates
> h2. References
> * [Spring Framework 7.0 Release
> Notes|https://github.com/spring-projects/spring-framework/wiki/Release-Notes]
> * [Spring Framework 7.0 Migration
> Guide|https://github.com/spring-projects/spring-framework/wiki/Upgrading-to-Spring-Framework-7.x]
> * [Spring Data Release Train|https://spring.io/projects/spring-data]
> * [Apache Geode Spring Integration
> Documentation|https://geode.apache.org/docs/]
> h2. Additional Notes
> This upgrade should be coordinated with:
> * The Geode community for feedback and testing
> * Major version release planning (breaking changes may require Geode major
> version bump)
--
This message was sent by Atlassian Jira
(v8.20.10#820010)