From 70b709494c881de775e94f17a9b8ce1c371baf2d Mon Sep 17 00:00:00 2001 From: Alex Vandiver Date: Fri, 2 May 2025 18:53:17 +0000 Subject: [PATCH] sentry: Use TornadoIntegration when running under Tornado. The DjangoIntegration is explicitly disabled, because it attempts to hook into the request handling in a way which is not compatible with Tornado, and leaks event handlers. --- zproject/sentry.py | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/zproject/sentry.py b/zproject/sentry.py index 84c77d879a..518d4e62a7 100644 --- a/zproject/sentry.py +++ b/zproject/sentry.py @@ -7,6 +7,7 @@ from sentry_sdk.integrations.django import DjangoIntegration from sentry_sdk.integrations.logging import ignore_logger from sentry_sdk.integrations.redis import RedisIntegration from sentry_sdk.integrations.sqlalchemy import SqlalchemyIntegration +from sentry_sdk.integrations.tornado import TornadoIntegration from sentry_sdk.utils import capture_internal_exceptions from version import ZULIP_VERSION @@ -73,15 +74,22 @@ def setup_sentry(dsn: str | None, environment: str) -> None: if os.path.exists(os.path.join(DEPLOY_ROOT, "sentry-release")): with open(os.path.join(DEPLOY_ROOT, "sentry-release")) as sentry_release_file: sentry_release = sentry_release_file.readline().strip() + integrations = [ + RedisIntegration(), + SqlalchemyIntegration(), + ] + disabled_integrations = [] + if settings.RUNNING_INSIDE_TORNADO: + integrations.append(TornadoIntegration()) + disabled_integrations.append(DjangoIntegration()) + else: + integrations.append(DjangoIntegration()) sentry_sdk.init( dsn=dsn, environment=environment, release=sentry_release, - integrations=[ - DjangoIntegration(), - RedisIntegration(), - SqlalchemyIntegration(), - ], + integrations=integrations, + disabled_integrations=disabled_integrations, before_send=add_context, # Increase possible max wait to send exceptions during # shutdown, from 2 to 10; potentially-large exceptions are of