[ 
https://issues.apache.org/jira/browse/GEODE-10502?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jinwoo Hwang updated GEODE-10502:
---------------------------------
    Fix Version/s: 2.0.0

> 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
>            Assignee: Jinwoo Hwang
>            Priority: Major
>             Fix For: 2.0.0
>
>
> 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