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)