Repository navigation
Publish a live view failure event when the capture pipeline cannot start - #28
Draft
robertjamesprior wants to merge 1 commit into
Draft
robertjamesprior wants to merge 1 commit into
robertjamesprior wants to merge 1 commit into
Conversation
This branch has not been deployed
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.
A live view whose capture pipeline cannot start currently leaves no trace outside the VM's own log: the viewer connects, receives no frames, and the client has nothing to report. The telemetry plugin already forwards session connect/disconnect, so this adds the failure alongside them and carries a code the control plane can classify on.
What changed
live_view_failedis published into theconnectioncategory withsession_id, acode, and the pipeline error message.gpu_encoder_unavailablewhen the error names the encoder stack (no element "nvh264enc", a CUDA context failure,nvenc, a plugin load failure) andlive_view_pipeline_failedotherwise.signal/requestfails, which is where a pipeline that cannot start surfaces. Reporting goes through a package-level hook rather than a plugin reference, so the handler does not depend on the plugin manager, and it is a no-op when the plugin is disabled.eventPayloadgained a category so an event can choose one; existing events default tosystemand are unchanged.Why it matters
A percentage of live views fail because the GPU is already holding a video encoder session for the replay recorder. Nothing measures that today: support reads the VM log by hand, and only after a customer reports it. This makes the failure countable per session and per org, and gives alerting something to key on.
Testing
go test ./internal/plugins/telemetry/passes, including three new cases: the event shape it publishes, the no-op path with no reporter, and the error classification table.go build ./internal/websocket/...andgo veton both touched packages pass. The local VM needed the GStreamer and X11 dev headers installed to build; CI has them.Not in this PR
The control plane, dashboard and docs rows for the new event type. Unknown types are accepted by the ingest endpoint when a category is supplied, so this ships independently and the rest can follow.