Skip to content
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

configureScope leaks when using FrankenPHP in worker mode #905

Open
SherinBloemendaal opened this issue Jan 9, 2025 · 3 comments
Open

Comments

@SherinBloemendaal
Copy link

SherinBloemendaal commented Jan 9, 2025

How do you use Sentry?

Self-hosted / on-premises

SDK version

5.1.0

Steps to reproduce

Hi,

I've stumbled upon the some issues when running FrankenPHP in worker mode.(https://frankenphp.dev/docs/worker/).

First: The User PII is always the same:

  1. Run a Symfony application with FrankenPHP in worker mode
  2. Set send_default_pii: true in sentry.yaml
  3. Authenticate and trigger an exception
  4. Authenticate again with different user and trigger an exception
  5. The old PII (IP Address and User ID) is sent for the second exception

Second: Once a context is set using configureScope, the context stays in subsequent requests.

  1. Run a Symfony application with FrankenPHP in worker mode
  2. Call an endpoint (for example /test-1 via a controller), inside the controller add configureScope and set some context, then trigger an exception
  3. Call an another endpoint (for example /test-2 via a controller), inside the controller add configureScope and also set some context but set a different key (don't send the same key as the previous controller). Then trigger an exception again.
  4. Looking in Sentry; the second event contains a key of the previous call which was not set in the second call.

Expected result

The user PII should be refresh on each request and the entire configureScope should be reset properly by using the ResetInterface since it leaks when using FrankenPHP in worker mode (don't know if its intentional that it leaks).

About the PII it seems to be caused by: (...->getId() is only null on the first request)
User:

if (null === $user->getId()) {

IP-address:
if (null === $user->getIpAddress()) {

The question is if the problem lies here or that the entire scope should be purged on each request.

Actual result

The context set inside the configureScope is never reset and leaking into different requests until FrankenPHP is restarted. Also causing the User PII to be always the same.

@getsantry getsantry bot moved this to Waiting for: Product Owner in GitHub Issues with 👀 3 Jan 9, 2025
@cleptric
Copy link
Member

We didn't optimize the Symfony SDK for asynchronous runtimes like FrankenPHP just yet.

@nesl247
Copy link

nesl247 commented Jan 20, 2025

@cleptric do you have any idea when this will be done?

@getsantry getsantry bot moved this to Waiting for: Product Owner in GitHub Issues with 👀 3 Jan 20, 2025
@cleptric
Copy link
Member

Can't give you an estimate on this right now.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: No status
Development

No branches or pull requests

3 participants