Repository navigation
fix(monitors): keep ready inputs updating during source holds (#801) - #803
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #801, under approved parent #517.
An unavailable private GPU monitor copy currently refuses the entire job, freezing healthy Preview and multiview inputs. Admit each source independently and retain one last-good private/CPU frame on the monitor owner (64 sources, 256 MiB logical payload budget). Missing content reports held/unavailable while unrelated inputs continue; holds preserve their original epoch/frame/capture observation. Production aliases are rejected and production leases detach before enqueueing. Undemanded cache references retire on the monitor owner with separate GPU completion leases.
Source exports now include source epoch in held-frame dedup, so a reconnect reusing a frame ID republishes its new pixels. Native snapshots expose bounded source states with an attributable job sequence; the support bundle adds versioned ready/held/unavailable and logical resource observations. Isolation/GPU ingress defaults, 1080p60 quality and Program buffering are unchanged.
Validation so far: Release build; 3 admission, 4 cache, 4 worker and 3 real-pixel tests passed; real private-GPU hold plus healthy pixel changes, all-missing recovery and epoch-reused source export checked. The isolated blocked-monitor Program test passed. Real WGC opt-in test passed with separate CPU/ISO arrivals, production advancing while every optional monitor slot was held, and three reconnect epochs. Support tests 34 passed; full MediaCore suite 2,331 passed on quiet repeat. The first full suite reproduced existing #754's double recovery outcome (2,330 passed/1 failed); failure and successful targeted repeat retained on that issue, attribution unresolved.
Final native head 768c47d built in Release and passed the additive evidence test, real-pixel monitor tests and isolated blocked-monitor test locally. All hosted CI/CodeQL checks passed for that head. Follow-up 247a29f adds only #804's BACKLOG intake row; no native/runtime changes. All hosted CI and CodeQL checks passed for final head 247a29f.
The completed maintained matched harness (3 paired two-minute windows, AB/BA/AB, 10-second warmup, 1080p60/buffer 2/local recording) produced isolated underruns 2/2/0 versus inline 34/186/124. Recording missing counts match; audio loss, Program sequence gaps, render skips and encoder queue failures remain zero. Isolated retention remained 10 inputs/47,923,200 logical bytes with no admission/resource refusal or SHM pool-busy delta. Actual missing-input behavior is separately covered by the pixel fault tests.
The first two isolated windows FAIL release delivery acceptance. Logs locate measured post-GPU-ready publication expiry (19.426/16.593 ms export wall time) in
D3DProgramBuffer::deliveryLoop; #804 tracks the outstanding boundary and its unknown driver/mutex/preemption contribution. Full retained verdicts. This PR fixes source-scoped admission; it does not qualify the complete pipeline or establish that it introduced publication delay. Parent #517 and default/release qualification remain open, including #802, #804 and installed/receiver/latency/A/V/resource/fleet gates. Installed files/settings and both runtime defaults are unchanged.