Browse Source

fix(hybrid-cloud): Fixes issue where watermarking code pulls a transaction in split DB mode causing a silo mismatch (#53523)

Gabe Villalobos 1 year ago
parent
commit
2f0ad4f176
1 changed files with 6 additions and 2 deletions
  1. 6 2
      src/sentry/db/postgres/transactions.py

+ 6 - 2
src/sentry/db/postgres/transactions.py

@@ -6,6 +6,7 @@ import threading
 from django.conf import settings
 from django.db import connections, transaction
 
+from sentry.silo import SiloMode
 from sentry.utils.env import in_test_environment
 
 
@@ -26,14 +27,17 @@ def django_test_transaction_water_mark(using: str | None = None):
 
     if using is None:
         with contextlib.ExitStack() as stack:
-            for db_name in settings.DATABASES:  # type: ignore
+            for db_name in settings.DATABASES:
                 stack.enter_context(django_test_transaction_water_mark(db_name))
             yield
         return
 
     from sentry.testutils import hybrid_cloud
+    from sentry.testutils.silo import assume_test_silo_mode
 
-    connection = transaction.get_connection(using)
+    # Exempt get_connection call from silo validation checks
+    with assume_test_silo_mode(SiloMode.MONOLITH):
+        connection = transaction.get_connection(using)
 
     prev = hybrid_cloud.simulated_transaction_watermarks.state.get(using, 0)
     hybrid_cloud.simulated_transaction_watermarks.state[