AetherEngine 5.17.4
Fixed
-
-15410when the LOCAL segment producer stalls (SSAI cutter wedge) while LL-HLS blocking-reload is latched ON, including a second one right after the stall watchdog's item reload. Follow-up to the 5.16.0 observed-cadence fix (#167): the cadence policy observes ingest arrivals, which keep flowing while the cutter is wedged, so it cannot see this failure mode. The held?_HLS_msn=reload waited on a segment that will never be cut, timed out, and was answered with the unchanged playlist (no requested MSN), which AVPlayer flags as invalid blocking-reload behavior; the stall watchdog's item reload against the same zombie server immediately re-armed a second hold.Three coordinated changes:
- The local server answers an unsatisfiable held blocking reload with a retriable 503 (RFC 8216bis) instead of a spec-invalid unchanged 200. Satisfied holds and the gate-off immediate serve are unchanged.
- The segment provider gains a terminal production-halted latch that beats the host
liveBlockingReloadoverride and the cadence policy, and releases parked waiters immediately (they 503 now instead of sleeping out their hold). - Every live pump exit that delegates to host retune (
segmentStall,sourceReplay, non-URL-reopenable pump deaths) latches it, so blocking-reload stops being advertised for the rest of the session, including a client-initiated item reload against the same server. Reopenable URL exits keep cutting into the same provider and do not latch.
Reported by G00380316 (#167 retest). Covered by
LiveProductionHaltTests(resolver precedence, exit-reason classification, waiter release, socket-level 503/200 response shapes).
No public API changes.