lablup / lablup/backend.ai

Implement StopSessionsLifecycleHandler and ScheduleType.STOP

Open
#9,812 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
670
Forks
183
Avg merge
15h 13m
Merged PRs (30d)
368

Description

Create a new sokovan lifecycle handler for processing STOPPING sessions. Follows the TerminateSessionsLifecycleHandler pattern but preserves session metadata.

Handler spec:
- target_statuses: [SessionStatus.STOPPING]
- execute(): send container destroy RPC to agents, set resource_allocations.free_at
- status_transitions.success: Session → STOPPED (via CHECK_STOPPING_PROGRESS)
- status_transitions.expired/give_up: Session → STOPPED (force complete)
- Key difference from terminate: SessionRow is NOT cleaned up, metadata preserved

Registration:
- Add ScheduleType.STOP to ScheduleType enum
- Add LockID.LOCKID_SOKOVAN_TARGET_STOPPING to LockID enum
- Register handler in factory._create_lifecycle_handlers()

Key files:
- NEW: manager/sokovan/scheduler/handlers/lifecycle/stop_sessions.py
- manager/scheduler/types.py (ScheduleType enum)
- manager/defs.py (LockID enum)
- manager/sokovan/scheduler/factory.py (_create_lifecycle_handlers)
- manager/sokovan/scheduler/handlers/__init__.py (export)
- Reference: manager/sokovan/scheduler/handlers/lifecycle/terminate_sessions.py

## Success Criteria
- [ ] StopSessionsLifecycleHandler processes sessions in STOPPING status
- [ ] Container destroy RPC sent to agents for all kernels
- [ ] resource_allocations.free_at is set (resources released)
- [ ] SessionRow is NOT deleted (metadata preserved for resume)
- [ ] Handler registered in factory and discoverable by coordinator
- [ ] pants check passes for affected packages

JIRA Issue: BA-4961

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.