getsentry / sentry

Developer-first error tracking and performance monitoring
https://sentry.io
Other
39.07k stars 4.19k forks source link

Restart onError sampling for replays after stopping #77458

Open dalnoki opened 1 month ago

dalnoki commented 1 month ago

Problem Statement

We received the following message from a customer:

One account in our team has multiple roles that can be switched. We hope that when the user switches roles, the errors that occur will be recorded in a new Replays. The latest version does not have replay.setupOnce(). Simply using replay.stop() and replay.start() will not generate new Replays. I only want to use replaysOnErrorSampleRate, because if replaysSessionSampleRate or tracesSampleRate is used, replay.start() will be executed when switching users, and then a Replay without error records will be generated.

Solution Brainstorm

Expose a public API to allow for restarting of onError sampling after replay has been stopped.

Product Area

Replays

getsantry[bot] commented 1 month ago

Assigning to @getsentry/support for routing ⏲️

getsantry[bot] commented 1 month ago

Routing to @getsentry/product-owners-replays for triage ⏲️

Zero-ruan commented 1 month ago

Image

I didn’t make many changes to the version that allowed the use of setupOnce(). In the old version, I used replay.setupOnce() followed by replay.startBuffering(), which successfully reopened a replay after executing replay.stop(). However, after upgrading, I found that setupOnce() is no longer available, and simply executing replay.startBuffering() or replay.start() does not start a new replay. I couldn’t find a solution for this in the documentation.

billyvg commented 1 month ago

@Zero-ruan This is a bit hacky because it's using a private method, but you can call this after switching users: replay && replay['_initialize'](Sentry.getClient()); -- we will consider adding a public API for this in the future