lablup / lablup/backend.ai

Add STOPPING/STOPPED states to session and kernel status enums

Open
#9,811 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
670
Forks
183
Avg merge
17h 7m
Merged PRs (30d)
358

Description

Add STOPPING and STOPPED states to SessionStatus and KernelStatus enums, update transition maps, status classification methods, and create DB migration.

SessionStatus changes:
- Add STOPPING, STOPPED to enum
- SESSION_STATUS_TRANSITION_MAP additions:
- RUNNING → {STOPPING, ...existing}
- STOPPING → {STOPPED, TERMINATING, ERROR}
- STOPPED → {PENDING, TERMINATING, TERMINATED}
- resource_occupied_statuses: exclude STOPPED
- terminatable_statuses: include STOPPED (can be fully terminated)
- terminal_statuses: exclude STOPPED (can be resumed)

KernelStatus changes:
- Add corresponding states or map to existing TERMINATED for kernels in stopped sessions

Key files:
- manager/data/session/types.py (SessionStatus enum + helper methods)
- manager/data/kernel/types.py (KernelStatus enum + helper methods)
- manager/models/session/row.py (SESSION_STATUS_TRANSITION_MAP, KERNEL_SESSION_STATUS_MAPPING)
- alembic/versions/ (new migration file)

## Success Criteria
- [ ] SessionStatus.STOPPING and SessionStatus.STOPPED are valid enum values
- [ ] RUNNING → STOPPING transition is allowed in SESSION_STATUS_TRANSITION_MAP
- [ ] STOPPING → STOPPED transition is allowed
- [ ] STOPPED → PENDING transition is allowed (for resume)
- [ ] STOPPED → TERMINATING transition is allowed (for full termination)
- [ ] STOPPED is NOT in resource_occupied_statuses()
- [ ] STOPPED is NOT in terminal_statuses()
- [ ] STOPPED is in terminatable_statuses()
- [ ] DB migration applies cleanly
- [ ] pants check passes for affected packages

JIRA Issue: BA-4960

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.