Jinwoo Hwang created GEODE-10502:
------------------------------------

             Summary: Migrate Spring Shell from 1.2.0 to 3.3.x for GFSH 
Modernization
                 Key: GEODE-10502
                 URL: https://issues.apache.org/jira/browse/GEODE-10502
             Project: Geode
          Issue Type: Improvement
            Reporter: Jinwoo Hwang


h2. 
h2. Summary

Upgrade GFSH from Spring Shell 1.2.0 (2012) to 3.3.x as part of Spring 
Framework 6 migration. *Complete rewrite* of 150+ commands required due to 
incompatible API changes.

{*}Impact{*}: All GFSH commands | {*}Risk{*}: High (user-facing changes) | 
{*}Timeline{*}: 14 weeks
----
h2. Background
h3. Why Required
 * Spring Framework 6 dependency (blocks entire Spring ecosystem upgrade)
 * Spring Shell 1.x end-of-life (no security patches)
 * Jakarta EE 10 namespace support required

h3. Complexity: *VERY HIGH*
 * Zero backward compatibility between 1.x and 3.x
 * Complete API rewrite for all commands
 * New annotation model and converter system

----
h2. Scope
h3. *In Scope* (150+ commands)
 * {*}Core GFSH{*}: All cluster, region, data, query commands
 * {*}JDBC Connectors{*}: Connection management commands
 * {*}Infrastructure{*}: Converters, completers, validators, help system
 * {*}Testing{*}: Unit/integration tests for all commands

h3. *Breaking Changes*
||Component||Before (1.x)||After (3.x)||
|Commands|{{@CliCommand}}|{{@ShellMethod}}|
|Options|{{@CliOption}}|{{@ShellOption}}|
|Classes|{{CommandMarker}} interface|{{@ShellComponent}}|
|Converters|Custom interface|Spring {{Converter<S,T>}}|
|Completion|{{getAllPossibleValues()}}|{{ValueProvider}}|
|Results|{{Result}} objects|Direct return values|
----
h2. Implementation Plan
h3. *Phase 1: Setup* (2 weeks)
 * Audit all GFSH commands
 * Update dependencies
 * Create migration prototype

h3. *Phase 2: Core Migration* (8 weeks)
 * {*}Week 3-4{*}: Basic & cluster commands
 * {*}Week 5-6{*}: Region & data commands
 * {*}Week 7-8{*}: Configuration commands
 * {*}Week 9-10{*}: Advanced features

h3. *Phase 3: JDBC & Infrastructure* (3 weeks)
 * {*}Week 11{*}: JDBC connector commands
 * {*}Week 12{*}: Converters & completers
 * {*}Week 13{*}: Testing & documentation

h3. *Phase 4: Validation* (1 week)
 * End-to-end testing
 * Performance validation
 * Release preparation

----
h2. Risks & Mitigation
||Risk||Impact||Mitigation||
|*Complete API rewrite*|All commands break|Incremental migration, extensive 
testing|
|*User script compatibility*|Customer impact|Maintain command syntax, migration 
guide|
|*Testing coverage gaps*|Quality issues|Automated regression tests|
|*Performance regression*|User experience|Benchmark testing|
----
h2. Success Criteria
 * [ ] All 150+ commands migrated to Spring Shell 3.x
 * [ ] Command syntax backward compatible
 * [ ] All tests passing (100% existing + new)
 * [ ] No performance regression (< 5%)
 * [ ] Documentation updated
 * [ ] Migration guide provided

 
h2. Resource Requirements
h3. *Team Allocation*
 * {*}Primary Developer{*}: 1 FTE for 14 weeks
 * {*}Code Reviewer{*}: 0.25 FTE for 14 weeks
 * {*}QA Engineer{*}: 0.5 FTE for weeks 12-14
 * {*}Technical Writer{*}: 0.25 FTE for weeks 13-14

h3. *Estimated Effort*
 * {*}Development{*}: 10 person-weeks
 * {*}Testing{*}: 3 person-weeks
 * {*}Documentation{*}: 1 person-week
 * {*}Total{*}: *14 person-weeks*

h2. Acceptance Criteria

This task is complete when:
 # ✅ All GFSH commands migrated to Spring Shell 3.x annotations
 # ✅ All converters migrated to Spring Converter interface
 # ✅ All completers migrated to ValueProvider
 # ✅ All tests passing (unit, integration, distributed)
 # ✅ Performance validated (no significant regression)
 # ✅ Documentation updated (user guide, API docs, migration guide)
 # ✅ Code review completed and approved
 # ✅ Merged to develop branch

----
h2. References
h3. *Documentation*
 * [Spring Shell 3.x Reference 
Documentation|https://docs.spring.io/spring-shell/docs/current/reference/htmlsingle/]
 * [Spring Shell 3.x Migration 
Guide|https://docs.spring.io/spring-shell/docs/current/reference/htmlsingle/#migration]
 * [Apache Geode GFSH 
Documentation|https://geode.apache.org/docs/guide/latest/tools_modules/gfsh/chapter_overview.html]

 
h2. Notes
h3. *Why This is Critical*

Spring Shell migration is the *highest risk component* of the Spring Framework 
6 migration because:
 # {*}Complete Rewrite{*}: Unlike other Spring modules, Spring Shell 3.x is not 
backward compatible
 # {*}User-Facing{*}: GFSH is the primary interface for many Geode operations
 # {*}Extensive Usage{*}: 150+ commands across the codebase
 # {*}Custom Extensions{*}: Users may have custom commands that will break



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to