-
Notifications
You must be signed in to change notification settings - Fork 1.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Playback of long (~200 MB) session crashes the browser tab #10578
Labels
audit-log
Issues related to Teleports Audit Log
bug
test-plan-problem
Issues which have been surfaced by running the manual release test plan
ui
ux
Comments
zmb3
added
the
test-plan-problem
Issues which have been surfaced by running the manual release test plan
label
Feb 24, 2022
This is an issue I'm also running into. I have a "Kiosk" running just Chromium. Once Teleport is installed, chromium constantly reboots, causing the BrowserMetrics to fill up. I can't find any report on why this happens, but the folder becomes HUGE in a few days, and the system crashes... Also, the kiosk is unusable, given the reboot. |
zmb3
added a commit
that referenced
this issue
Oct 31, 2023
This new API can be used to play back sessions of any type. The player accepts a session ID and a streamer, and provides the caller with an API for playback controls (speed, play/pause, seek, etc) as well as a channel that receives events with the proper timing delay applied. The design for this change is discussed in RFD 91. Updates #10578 Updates #10579 Updates gravitational/teleport-private#665 Updates gravitational/teleport-private#1024
github-merge-queue bot
pushed a commit
that referenced
this issue
Oct 31, 2023
This new API can be used to play back sessions of any type. The player accepts a session ID and a streamer, and provides the caller with an API for playback controls (speed, play/pause, seek, etc) as well as a channel that receives events with the proper timing delay applied. The design for this change is discussed in RFD 91. Updates #10578 Updates #10579 Updates gravitational/teleport-private#665 Updates gravitational/teleport-private#1024
zmb3
added a commit
that referenced
this issue
Jan 6, 2024
Prior to this, the web UI would download the entire session recording and store it in JavaScript memory before starting playback. This caused the browser tab to crash when attempting to play back sessions larger than ~5MB. For playback, we use a custom binary protocol rather than the protobuf envelopes that we use for live sessions. The protobuf envelopes only send raw PTY data, there is no place to put the timing data. Adding fields to the envelope would be a disruptive change because our JS codec is hand-rolled and we'd have to make the parsing updates manually. Updates gravitational/teleport-private#1024 Closes gravitational/teleport-private#665 Closes #10578
github-merge-queue bot
pushed a commit
that referenced
this issue
Jan 6, 2024
Prior to this, the web UI would download the entire session recording and store it in JavaScript memory before starting playback. This caused the browser tab to crash when attempting to play back sessions larger than ~5MB. For playback, we use a custom binary protocol rather than the protobuf envelopes that we use for live sessions. The protobuf envelopes only send raw PTY data, there is no place to put the timing data. Adding fields to the envelope would be a disruptive change because our JS codec is hand-rolled and we'd have to make the parsing updates manually. Updates gravitational/teleport-private#1024 Closes gravitational/teleport-private#665 Closes #10578
ibeckermayer
pushed a commit
that referenced
this issue
Feb 10, 2024
This new API can be used to play back sessions of any type. The player accepts a session ID and a streamer, and provides the caller with an API for playback controls (speed, play/pause, seek, etc) as well as a channel that receives events with the proper timing delay applied. The design for this change is discussed in RFD 91. Updates #10578 Updates #10579 Updates gravitational/teleport-private#665 Updates gravitational/teleport-private#1024
lxea
pushed a commit
that referenced
this issue
Feb 13, 2024
This new API can be used to play back sessions of any type. The player accepts a session ID and a streamer, and provides the caller with an API for playback controls (speed, play/pause, seek, etc) as well as a channel that receives events with the proper timing delay applied. The design for this change is discussed in RFD 91. Updates #10578 Updates #10579 Updates gravitational/teleport-private#665 Updates gravitational/teleport-private#1024
github-merge-queue bot
pushed a commit
that referenced
this issue
Feb 13, 2024
* Introduce a new streaming player API (#31754) This new API can be used to play back sessions of any type. The player accepts a session ID and a streamer, and provides the caller with an API for playback controls (speed, play/pause, seek, etc) as well as a channel that receives events with the proper timing delay applied. The design for this change is discussed in RFD 91. Updates #10578 Updates #10579 Updates gravitational/teleport-private#665 Updates gravitational/teleport-private#1024 * Convert the desktop sesssion player to the new player API (#34070) This makes a few changes to the player API to ensure that errors are correctly propagated. * Switch desktop playback to gorilla/websocket (#36405) We use gorilla/websocket throughout the app, but desktop playback leveraged x/net/websocket instead. Convert to gorilla so that we are consistent and use the same library everywhere websockets are used. * Read the bearer token over websocket endpoints instead of query parameter (#37520) * Read the bearer token over WS endpoints use the request context, not session Dont pass websocket by context lint resolve some comments Add TestWSAuthenticateRequest Close ws in handler deprecation notices, doc resolve comments resolve comments give a longer read/write deadline dont set write deadline, ws endpoints never did before and it breaks things convert frontend to use ws access token Resolove comments, move to using an explicit state fix ci reset read deadline prettier * update connectToHost * linter * read errors from websocket * missing /ws on ttyWsAddr and fix wrong onmessage * fix race in test * lint * skip TestTerminal as it takes 11 seconds to run * dont skip the test * resolve apiserver comments * Add an AuthenticatedWebSocket class * convert other clients to use AuthenticatedWebSocket * Converts `AuthenticatedWebSocket` into drop-in replacement for `WebSocket` (#37699) * Converts `AuthenticatedWebSocket` into drop-in replacement for `WebSocket` that automatically goes through Teleport's custom authentication process before facilitating any caller-defined communication. This also reverts previous-`WebSocket` users to their original state (sans the code for passing the bearer token in the query string), swapping in `AuthenticatedWebSocket` in place of `WebSocket`. * Create a single authnWsUpgrader with a comment justifying why we turn off CORS * recieving to receiving * resolve comments --------- Co-authored-by: Isaiah Becker-Mayer <[email protected]> * Updates `desktopPlaybackHandle` to new ws paradigm (#37981) * Updates `desktopPlaybackHandle` to new ws paradigm This was mistakenly left out of #37520. This commit also refactors `WithClusterAuthWebSocket` slightly for easier comprehension, and updates the vite config to facilitate the new websocket endpoints in development mode. * Update lib/web/apiserver.go Co-authored-by: Zac Bergquist <[email protected]> --------- Co-authored-by: Zac Bergquist <[email protected]> * polishing off merge errors * fixes Path in makeTerminal to reflect new /ws suffix --------- Co-authored-by: Zac Bergquist <[email protected]> Co-authored-by: Alex McGrath <[email protected]>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
audit-log
Issues related to Teleports Audit Log
bug
test-plan-problem
Issues which have been surfaced by running the manual release test plan
ui
ux
Description
What happened:
Playback of session with single command ("find /") caused the browser (Google Chrome) to crash, after several seconds of wait. When measured with
tsh play
I found the session to be ~200 MB long.What you expected to happen:
Playback working.
The text was updated successfully, but these errors were encountered: