2.7 KiB
2.7 KiB
Coordinator Refactoring Status
✅ Completed
- SupervisorTransport trait created -
lib/clients/supervisor - Mycelium transport moved -
lib/clients/supervisor/src/transports/mycelium.rs - SupervisorClient made generic -
SupervisorClient<T: SupervisorTransport> - Coordinator client updated - Uses
SupervisorClient<MyceliumTransport> - Job type migrated - Now uses
hero_job::Job - Job validation added -
job.validate_required_fields(),job.validate_context() - Old validation removed - Removed
validate_job()from service.rs
🔄 In Progress - Coordinator Code Updates
The coordinator needs updates throughout to use the new Job API:
Required Changes:
-
Method calls → Field access:
job.id()→job.idjob.caller_id()→job.caller_idjob.context_id()→job.context_id
-
Field name changes:
job.script→job.payloadjob.script_type→job.executor
-
ID type changes:
- Change from
u32toStringthroughout - Update HashMap keys, function signatures, database queries
- Change from
-
Status handling:
- Remove
job.status()calls - Status is tracked separately in coordinator state
- Remove
-
Workflow fields (depends, prerequisites):
- These don't exist on
hero_job::Job - Stored in
JobSummaryfor DAG operations - Need separate storage/tracking
- These don't exist on
Files Needing Updates (~41 errors):
service.rs- Job CRUD operations, method→field changesdag.rs- Workflow orchestration, depends/prerequisites handlingrpc.rs- RPC handlers, ID type changesrouter.rs- Job routing, already partially updated- Database queries - ID type changes
Next Steps:
- Update
service.rs- Replace method calls with field access - Update
dag.rs- Handle workflow fields from JobSummary - Update
rpc.rs- Handle String IDs - Update database layer - String ID support
- Test compilation
- Integration testing
Architecture Summary
lib/clients/supervisor/
├── src/
│ ├── lib.rs (SupervisorClient<T>, HttpTransport, trait)
│ └── transports/
│ ├── mod.rs
│ └── mycelium.rs (MyceliumClient, MyceliumTransport, SupervisorHub)
bin/coordinator/
├── models/
│ └── job.rs (re-exports hero_job::Job with validation)
├── service.rs (needs updates)
├── dag.rs (needs updates)
├── rpc.rs (needs updates)
└── router.rs (updated)
Notes
hero_job::Jobuses String UUIDs for IDs- Workflow orchestration (depends, prerequisites) handled by JobSummary
- Job status tracked separately in coordinator state machine
- Validation methods added to Job model for coordinator use