Skip to content

Rethrow span export errors to prevent unnecessary sendIfReady calls#1368

Merged
matux merged 1 commit into
feature/matux/streaming-capturefrom
matux/rethrow-span-error
Oct 11, 2025
Merged

Rethrow span export errors to prevent unnecessary sendIfReady calls#1368
matux merged 1 commit into
feature/matux/streaming-capturefrom
matux/rethrow-span-error

Conversation

@matux

@matux matux commented Oct 11, 2025

Copy link
Copy Markdown
Contributor

Note

This is being merged into a feature branch:
feature/matux/streaming-capture

Description of the change

Rethrow span export errors to prevent unnecessary sendIfReady calls.

The main difference now is that the scheduler won't call sendIfReady if 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._export is no longer async since it wasn't doing anything async-related.
  • ScheduledCapture.sendIfReady is no longer awaited in ScheduledCapture.schedule's timer since there's no need to await anything.
  • Updated some error messages.
  • Added a type annotation for Recorder to keep the IDE from letting me make stupid mistakes.

Type of change

  • Bug fix (non-breaking change that fixes an issue)
  • New feature (non-breaking change that adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • Maintenance
  • New release

Related issues

CAT-485/extended-post-trigger-replay-duration

@matux matux requested review from Copilot and waltjones October 11, 2025 13:48
@matux matux self-assigned this Oct 11, 2025

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 _export method from async to sync since no async operations were performed
  • Modified error handling to throw errors instead of silent returns, preventing redundant sendIfReady calls
  • 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.

@matux matux force-pushed the matux/init-logger-on-some-tests branch from 81d9378 to feb9577 Compare October 11, 2025 15:20
Base automatically changed from matux/init-logger-on-some-tests to feature/matux/streaming-capture October 11, 2025 15:24
@matux matux force-pushed the matux/rethrow-span-error branch from 1ee2b9e to d219e8b Compare October 11, 2025 15:25
@matux matux merged commit 38e36f0 into feature/matux/streaming-capture Oct 11, 2025
6 checks passed
@matux matux deleted the matux/rethrow-span-error branch October 11, 2025 15:27
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)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants