Rethrow span export errors to prevent unnecessary sendIfReady calls#1368
Merged
Merged
Conversation
Contributor
There was a problem hiding this comment.
Pull Request Overview
This pull request improves error handling in the replay capture system by rethrowing span export errors to prevent unnecessary sendIfReady calls after replay discard.
- Converted
_exportmethod from async to sync since no async operations were performed - Modified error handling to throw errors instead of silent returns, preventing redundant
sendIfReadycalls - Updated test expectations to match the new error-throwing behavior
Reviewed Changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated no comments.
| File | Description |
|---|---|
| src/browser/replay/scheduledCapture.js | Added type annotation, removed async from _export, changed error handling to throw instead of return |
| test/replay/unit/scheduledCapture.test.js | Updated tests to expect thrown errors and removed await calls for sync methods |
| test/replay/unit/replayManager.test.js | Updated error message to match new implementation |
| test/replay/integration/replayManager.bufferIndex.test.js | Enhanced integration test to verify export behavior and timing |
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
81d9378 to
feb9577
Compare
waltjones
approved these changes
Oct 11, 2025
Base automatically changed from
matux/init-logger-on-some-tests
to
feature/matux/streaming-capture
October 11, 2025 15:24
1ee2b9e to
d219e8b
Compare
matux
added a commit
that referenced
this pull request
Oct 13, 2025
5 tasks
matux
added a commit
that referenced
this pull request
Oct 13, 2025
* Add _pendingContextIfReady and rename cursor in context (#1364) * Remove index.js from tests (#1366) * Init logger on replay integration tests to log errors (#1367) * Rethrow span export errors to prevent unnecessary sendIfReady calls (#1368) * Call _onComplete on all leading replay discard paths (#1369) * `ScheduledStreamCapture` to survive multiple rrweb checkouts (#1371)
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.
Note
This is being merged into a feature branch:
feature/matux/streaming-captureDescription of the change
Rethrow span export errors to prevent unnecessary
sendIfReadycalls.The main difference now is that the scheduler won't call
sendIfReadyif the export fails, since it's a noop call because at this point, the replay has been already discarded.It makes the flow more logical, and more aligned with the streaming/chunk-based version since it's more precise in its "send" calls.
Other minor changes:
ScheduledCapture._exportis no longerasyncsince it wasn't doing anything async-related.ScheduledCapture.sendIfReadyis no longer awaited inScheduledCapture.schedule's timer since there's no need to await anything.Recorderto keep the IDE from letting me make stupid mistakes.Type of change
Related issues
CAT-485/extended-post-trigger-replay-duration