getsentry / sentry-symfony

The official Symfony SDK for Sentry (sentry.io)
https://sentry.io
MIT License
694 stars 170 forks source link

Keep reference to the request until after the transaction is finished #879

Closed stayallive closed 1 month ago

stayallive commented 1 month ago

Would appreciate some constructive feedback, learning Symfony on the fly here.

My first attempt was a static variable on the RequestFetcher class which is less optimal because it's static it could be kept around longer then needed or have some conflicting state.

So I refactored this to the current RequestFetcher instance obtained from the container and place the current request as an instance variable on here.

If there is a "better" way that achieves the same all ears!

The reason we need to do this is because when we are finishing the transaction in the kernel's terminate event the RequestStack is already emptied and we thus no longer can resolve the current request and the RequestFetcher will thus fail to fetch the request. To work around this we set the current request on the RequestFetcher ourselfs when we start tracing and keep it around until after we finish the transaction.

Fixes #818