Stop respawning disabled-mode segment tasks

Supervisor filtered only on enabled, so disabled-mode segments (e.g.
the OPS_SEED_TEMPLATES skeleton, which seeds mode='disabled' until an
operator finishes wiring) got a task spawned every 10 s only to exit
immediately on the task's own enable-check, spamming the log with
"segment X disabled or removed, task exiting" every supervisor tick.

Aligning the supervisor's filter with the task's exit condition lets
disabled-mode segments stay quiescent. Flipping mode away from
'disabled' via the config UI now reaches the engine within one
supervisor cycle (≤10 s), unchanged.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
caoqianming 2026-05-19 12:26:25 +08:00
parent c5983ab5c3
commit ed638eadb2
1 changed files with 4 additions and 1 deletions

View File

@ -53,7 +53,10 @@ async fn supervise(state: AppState, store: Arc<SegmentRuntimeStore>) {
interval.tick().await; interval.tick().await;
match segment_service::list_segments(&state.platform.pool, None).await { match segment_service::list_segments(&state.platform.pool, None).await {
Ok(segments) => { Ok(segments) => {
for segment in segments.into_iter().filter(|s| s.enabled) { for segment in segments
.into_iter()
.filter(|s| s.enabled && s.mode != "disabled")
{
let needs_spawn = tasks let needs_spawn = tasks
.get(&segment.id) .get(&segment.id)
.is_none_or(|handle| handle.is_finished()); .is_none_or(|handle| handle.is_finished());