[
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)