[
https://issues.apache.org/jira/browse/GEODE-10527?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Jinwoo Hwang updated GEODE-10527:
---------------------------------
Fix Version/s: 2.1.0
> 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 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)
--
This message was sent by Atlassian Jira
(v8.20.10#820010)