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:
parent
c5983ab5c3
commit
ed638eadb2
|
|
@ -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());
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue