Skip to content

fix(rlix-scheduler): warn on GENERATION request without demand signal#34

Open
JunzheJoe wants to merge 1 commit into
zhenyu/miles-mvp-e2efrom
joe/gen-request-demand-warn
Open

fix(rlix-scheduler): warn on GENERATION request without demand signal#34
JunzheJoe wants to merge 1 commit into
zhenyu/miles-mvp-e2efrom
joe/gen-request-demand-warn

Conversation

@JunzheJoe

Copy link
Copy Markdown
Collaborator

What

Review finding S12-EST-NONE-HANG (F1-F12 code review, scheduler deep-dive).

request_gpus(GENERATION, step_target_estimate=None) is accepted and writes None into the durable rollout_open_pipelines registry. On the planner side (planner.plan_generation_gap_ratio, bootstrap-estimate branch), a pipeline with no positive estimate and no stored progress is skipped entirely — its pending request is never signaled, and the caller blocks forever inside request_gpus (which waits without timeout by design). No log line points at the cause; today the hazard is documented only in MilesPipeline._request_cluster_gpus's docstring.

This adds a logger.warning at both enqueue sites (request_gpus and notify_release_then_request_gpus) via a shared _warn_gen_request_without_demand_locked helper, naming the exact skip condition and the likely outcome.

Warn-only, no behavior change: some backends may legitimately enqueue first and publish progress later, so rejecting outright could break request-then-report flows. If we later decide to hard-reject, this helper is the single place to do it.

Tests

tests/test_scheduler_gen_request_warning.py — warn / no-warn matrix:

  • no estimate + no progress → warns
  • estimate=0 → warns
  • positive estimate → silent
  • stored progress (no estimate) → silent

Full suite: 69 passed, 3 skipped.

The gap-ratio planner skips a pipeline whose rollout_open_pipelines entry
has no positive step_target_estimate AND no stored progress (the
bootstrap-estimate branch in planner.plan_generation_gap_ratio). Such a
request is never signaled and its caller blocks forever in request_gpus
— silently. The hazard was documented only in MilesPipeline's docstring.

Warn at enqueue time (request_gpus + notify_release_then_request_gpus)
via a shared helper. Warn-only, no behavior change: some backends
legitimately request first and report progress later, so rejecting
outright could break them.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant