Uploaded image for project: 'Ignite'
  1. Ignite
  2. IGNITE-22096

Spring 6 support for ignite spring extensions

    XMLWordPrintableJSON

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:

      1. 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.
      2. Use maven.compiler.release=8 for parent pom. We should use the lowest target possible.
      3. If the spring module don't work in spring 6 env, upgrade it with spring 6 dependencies and set maven.compiler.release=17.
      4. 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.
      5. 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.
      6. 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.

      Attachments

        Activity

          People

            nshakarov Nusrat Shakarov
            nshakarov Nusrat Shakarov
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated: