Details
-
Epic
-
Status: Open
-
Major
-
Resolution: Unresolved
-
None
-
None
-
None
-
None
-
Spring 6 support for ignite spring extensions
-
Docs Required, Release Notes Required
Description
This epic is about spring 6 support for ignite extensions.
Spring Boot 3 and Spring 6 users may have difficulties using ignite spring extensions in their applications because extensions are based on Spring 5. Most of them should work fine in Spring 6 apps, but we may find ourselves on thin ice.
For some spring modules like spring-data-commons and spring-session-core, Spring has finished spring 5 support in Nov 2023. For other modules(and spring-core) support ends in Aug 2024.
The proposal is to upgrade spring-based ignite extensions to spring 6. The upgrade will affect modules which currently don't work in the spring 6 environment(basically, where the API is broken).
Taking into consideration that spring 6 comes with JDK 17+ baseline the plan is the following:
- Add ignite extensions build on TC with JDK 17. JDK 8 build still will be available. The project will support both options, spring 6 modules will be enabled only when JDK 17 is used. The main build will be with JDK 17 because it covers all modules.
- Use maven.compiler.release=8 for parent pom. We should use the lowest target possible.
- If the spring module don't work in spring 6 env, upgrade it with spring 6 dependencies and set maven.compiler.release=17.
- Otherwise, make sure that spring 6 is covered with compatibility tests(we have such at least for cache-ext and tx-ext). If spring 6 is added to the compatibility test, the module should be built only with JDK 17, otherwise, tests will fail. But maven.compiler.release can be 8.
- For updated modules use a new versioning approach. Use the same major and minor for spring extension as the corresponding spring module is used. For example, If spring-session-core is updated to 3.2.2, the spring-session-ext version should be 3.2.x, where x is the revision number.
- If we update the module to spring 6 and we need a fix for the previous module version(which is based on spring 5), we can apply the fix to the master first, create a release branch(checkout from the previous spring 5 release) and cherry-pick fix.