getsentry / getsentry/sentry

Flaky test: tests/sentry/deletions/tasks/test_hybrid_cloud.py::TestCrossDatabaseTombstoneCascadeBehavior::test_cross_db_deletion

Open
#108,766 1 comment 0 reactions 0 assignees View on GitHub
flaky-test Tests
Dominant language
Python
Stars
44.8k
Forks
4.9k
Avg merge
21h 10m
Merged PRs (30d)
635

Description

Failing test: `tests/sentry/deletions/tasks/test_hybrid_cloud.py::TestCrossDatabaseTombstoneCascadeBehavior::test_cross_db_deletion`
Sentry sha: 02e8ded902342f5b18db32c91f8f4f174afc4551
Run: https://github.com/getsentry/sentry/actions/runs/22243447656

```
.venv/lib/python3.13/site-packages/django/db/backends/utils.py:105: in _execute
return self.cursor.execute(sql, params)
src/sentry/db/postgres/decorators.py:16: in inner
return func(self, *args, **kwargs)
src/sentry/db/postgres/base.py:95: in execute
return self.cursor.execute(sql, params)
E psycopg2.errors.UniqueViolation: duplicate key value violates unique constraint "sentry_monitor_pkey"
E DETAIL: Key (id)=(9) already exists.

The above exception was the direct cause of the following exception:
tests/sentry/deletions/tasks/test_hybrid_cloud.py:409: in test_cross_db_deletion
Monitor.objects.create(
src/sentry/silo/base.py:158: in override
return original_method(*args, **kwargs)
.venv/lib/python3.13/site-packages/django/db/models/manager.py:87: in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
src/sentry/silo/base.py:158: in override
return original_method(*args, **kwargs)
.venv/lib/python3.13/site-packages/django/db/models/query.py:665: in create
obj.save(force_insert=True, using=self.db)
src/sentry/silo/base.py:158: in override
return original_method(*args, **kwargs)
src/sentry/monitors/models.py:298: in save
return super().save(*args, **kwargs)
.venv/lib/python3.13/site-packages/django/db/models/base.py:902: in save
self.save_base(
src/sentry/silo/base.py:158: in override
return original_method(*args, **kwargs)
.venv/lib/python3.13/site-packages/django/db/models/base.py:1008: in save_base
updated = self._save_table(
.venv/lib/python3.13/site-packages/django/db/models/base.py:1169: in _save_table
results = self._do_insert(
.venv/lib/python3.13/site-packages/django/db/models/base.py:1210: in _do_insert
return manager._insert(
.venv/lib/python3.13/site-packages/django/db/models/manager.py:87: in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
.venv/lib/python3.13/site-packages/django/db/models/query.py:1873: in _insert
return query.get_compiler(using=using).execute_sql(returning_fields)
.venv/lib/python3.13/site-packages/django/db/models/sql/compiler.py:1882: in execute_sql
cursor.execute(sql, params)
.venv/lib/python3.13/site-packages/django/db/backends/utils.py:122: in execute
return super().execute(sql, params)
.venv/lib/python3.13/site-packages/sentry_sdk/utils.py:1870: in runner
return original_function(*args, **kwargs)
.venv/lib/python3.13/site-packages/django/db/backends/utils.py:79: in execute
return self._execute_with_wrappers(
.venv/lib/python3.13/site-packages/django/db/backends/utils.py:92: in _execute_with_wrappers
return executor(sql, params, many, context)
src/sentry/db/postgres/base.py:70: in _execute__include_sql_in_error
return execute(sql, params, many, context)
src/sentry/db/postgres/base.py:58: in _execute__clean_params
return execute(sql, clean_bad_params(params), many, context)
src/sentry/testutils/hybrid_cloud.py:133: in __call__
return execute(*params)
.venv/lib/python3.13/site-packages/django/db/backends/utils.py:100: in _execute
with self.db.wrap_database_errors:
.venv/lib/python3.13/site-packages/django/db/utils.py:91: in __exit__
raise dj_exc_value.with_traceback(traceback) from exc_value
.venv/lib/python3.13/site-packages/django/db/backends/utils.py:105: in _execute
return self.cursor.execute(sql, params)
src/sentry/db/postgres/decorators.py:16: in inner
return func(self, *args, **kwargs)
src/sentry/db/postgres/base.py:95: in execute
return self.cursor.execute(sql, params)
E django.db.utils.IntegrityError: duplicate key value violates unique constraint "sentry_monitor_pkey"
E DETAIL: Key (id)=(9) already exists.
E 
E SQL: INSERT INTO "sentry_monitor" ("id", "date_added", "organization_id", "project_id", "status", "guid", "slug", "name", "is_upserting", "owner_user_id", "owner_team_id", "config") VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s) RETURNING "sentry_monitor"."id", "sentry_monitor"."is_upserting"
```

Contributor guide

Open the contributing guide

Research direction

Start by running tests/sentry/deletions/tasks/test_hybrid_cloud.py::TestCrossDatabaseTombstoneCascadeBehavior::test_cross_db_deletion and read its setup around line 409. Trace how the test creates Monitor records and how the hybrid-cloud database state leads to the duplicate sentry_monitor primary key. Done means the test passes reliably without the reported IntegrityError.

Written by the indexing model from the issue text.

Assessment

Tech stack
django, postgresql, python
Domain
backend, databases, testing-qa
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.