Skip to content

feat(replays): Add self-serve bulk deletes #93864

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

Open
wants to merge 7 commits into
base: master
Choose a base branch
from

Conversation

cmanallen
Copy link
Member

@cmanallen cmanallen commented Jun 18, 2025

Enables customers to bulk delete their own data asynchronously.

@cmanallen cmanallen requested review from a team as code owners June 18, 2025 21:36
@github-actions github-actions bot added the Scope: Backend Automatically applied to PRs that change backend components label Jun 18, 2025
Copy link

codecov bot commented Jun 18, 2025

❌ 2 Tests Failed:

Tests completed Failed Passed Skipped
26664 2 26662 240
View the top 3 failed test(s) by shortest run time
tests.sentry.workflow_engine.migrations.test_0070_migrate_remaining_anomaly_detection_alerts.MigrateAnomalyDetectionAlertsTest::test_create_snoozed
Stack Traces | 0.006s run time
#x1B[1m#x1B[.../db/postgres/decorators.py#x1B[0m:91: in inner
    return func(self, sql, *args, **kwargs)
#x1B[1m#x1B[.../db/postgres/base.py#x1B[0m:84: in execute
    return self.cursor.execute(sql, clean_bad_params(params))
#x1B[1m#x1B[31mE   psycopg2.errors.UndefinedTable: relation "replays_replaydeletionjob" does not exist#x1B[0m
#x1B[1m#x1B[31mE   LINE 1: ...query", "replays_replaydeletionjob"."offset" FROM "replays_r...#x1B[0m
#x1B[1m#x1B[31mE                                                                ^#x1B[0m

#x1B[33mDuring handling of the above exception, another exception occurred:#x1B[0m
#x1B[1m#x1B[31m.venv/lib/python3.13.../db/backends/utils.py#x1B[0m:105: in _execute
    return self.cursor.execute(sql, params)
#x1B[1m#x1B[.../db/postgres/decorators.py#x1B[0m:77: in inner
    raise_the_exception(self.db, e)
#x1B[1m#x1B[.../db/postgres/decorators.py#x1B[0m:75: in inner
    return func(self, *args, **kwargs)
#x1B[1m#x1B[.../db/postgres/decorators.py#x1B[0m:18: in inner
    return func(self, *args, **kwargs)
#x1B[1m#x1B[.../db/postgres/decorators.py#x1B[0m:93: in inner
    raise type(e)(f"{e!r}\nSQL: {sql}").with_traceback(e.__traceback__)
#x1B[1m#x1B[.../db/postgres/decorators.py#x1B[0m:91: in inner
    return func(self, sql, *args, **kwargs)
#x1B[1m#x1B[.../db/postgres/base.py#x1B[0m:84: in execute
    return self.cursor.execute(sql, clean_bad_params(params))
#x1B[1m#x1B[31mE   psycopg2.errors.UndefinedTable: UndefinedTable('relation "replays_replaydeletionjob" does not exist\nLINE 1: ...query", "replays_replaydeletionjob"."offset" FROM "replays_r...\n                                                             ^\n')#x1B[0m
#x1B[1m#x1B[31mE   SQL: SELECT "replays_replaydeletionjob"."id", "replays_replaydeletionjob"."date_updated", "replays_replaydeletionjob"."date_added", "replays_replaydeletionjob"."range_start", "replays_replaydeletionjob"."range_end", "replays_replaydeletionjob"."environments", "replays_replaydeletionjob"."organization_id", "replays_replaydeletionjob"."project_id", "replays_replaydeletionjob"."status", "replays_replaydeletionjob"."query", "replays_replaydeletionjob"."offset" FROM "replays_replaydeletionjob" ORDER BY "replays_replaydeletionjob"."id" ASC#x1B[0m

#x1B[33mThe above exception was the direct cause of the following exception:#x1B[0m
#x1B[1m#x1B[31m.venv/lib/python3.13...................../site-packages/pytest_django/plugin.py#x1B[0m:565: in _django_setup_unittest
    request.getfixturevalue("django_db_setup")
#x1B[1m#x1B[31m.venv/lib/python3.13...................../site-packages/pytest_django/plugin.py#x1B[0m:565: in _django_setup_unittest
    request.getfixturevalue("django_db_setup")
#x1B[1m#x1B[31m.venv/lib/python3.13...................../site-packages/pytest_django/plugin.py#x1B[0m:565: in _django_setup_unittest
    request.getfixturevalue("django_db_setup")
#x1B[1m#x1B[31m.venv/lib/python3.13...................../site-packages/pytest_django/plugin.py#x1B[0m:565: in _django_setup_unittest
    request.getfixturevalue("django_db_setup")
#x1B[1m#x1B[31m.venv/lib/python3.13...................../site-packages/pytest_django/plugin.py#x1B[0m:565: in _django_setup_unittest
    request.getfixturevalue("django_db_setup")
#x1B[1m#x1B[31m.venv/lib/python3.13...................../site-packages/pytest_django/plugin.py#x1B[0m:565: in _django_setup_unittest
    request.getfixturevalue("django_db_setup")
#x1B[1m#x1B[31m.venv/lib/python3.13...................../site-packages/pytest_django/plugin.py#x1B[0m:565: in _django_setup_unittest
    request.getfixturevalue("django_db_setup")
#x1B[1m#x1B[31m.venv/lib/python3.13.../site-packages/pytest_django/fixtures.py#x1B[0m:144: in django_db_setup
    db_cfg = setup_databases(
#x1B[1m#x1B[31m.venv/lib/python3.13.../django/test/utils.py#x1B[0m:239: in setup_databases
    serialize_connection.creation.serialize_db_to_string()
#x1B[1m#x1B[31m.venv/lib/python3.13.../backends/base/creation.py#x1B[0m:145: in serialize_db_to_string
    serializers.serialize("json", get_objects(), indent=None, stream=out)
#x1B[1m#x1B[31m.venv/lib/python3.13.../core/serializers/__init__.py#x1B[0m:134: in serialize
    s.serialize(queryset, **options)
#x1B[1m#x1B[31m.venv/lib/python3.13.../core/serializers/base.py#x1B[0m:109: in serialize
    for count, obj in enumerate(queryset, start=1):
#x1B[1m#x1B[31m.venv/lib/python3.13.../backends/base/creation.py#x1B[0m:141: in get_objects
    yield from queryset.iterator(chunk_size=chunk_size)
#x1B[1m#x1B[31m.venv/lib/python3.13.../db/models/query.py#x1B[0m:502: in _iterator
    yield from iterable
#x1B[1m#x1B[31m.venv/lib/python3.13.../db/models/query.py#x1B[0m:91: in __iter__
    results = compiler.execute_sql(
#x1B[1m#x1B[31m.venv/lib/python3.13.../models/sql/compiler.py#x1B[0m:1623: in execute_sql
    cursor.execute(sql, params)
#x1B[1m#x1B[31m.venv/lib/python3.13.../site-packages/sentry_sdk/utils.py#x1B[0m:1809: in runner
    return original_function(*args, **kwargs)
#x1B[1m#x1B[31m.venv/lib/python3.13.../db/backends/utils.py#x1B[0m:79: in execute
    return self._execute_with_wrappers(
#x1B[1m#x1B[31m.venv/lib/python3.13.../db/backends/utils.py#x1B[0m:92: in _execute_with_wrappers
    return executor(sql, params, many, context)
#x1B[1m#x1B[31m.venv/lib/python3.13.../db/backends/utils.py#x1B[0m:100: in _execute
    with self.db.wrap_database_errors:
#x1B[1m#x1B[31m.venv/lib/python3.13.../django/db/utils.py#x1B[0m:91: in __exit__
    raise dj_exc_value.with_traceback(traceback) from exc_value
#x1B[1m#x1B[31m.venv/lib/python3.13.../db/backends/utils.py#x1B[0m:105: in _execute
    return self.cursor.execute(sql, params)
#x1B[1m#x1B[.../db/postgres/decorators.py#x1B[0m:77: in inner
    raise_the_exception(self.db, e)
#x1B[1m#x1B[.../db/postgres/decorators.py#x1B[0m:75: in inner
    return func(self, *args, **kwargs)
#x1B[1m#x1B[.../db/postgres/decorators.py#x1B[0m:18: in inner
    return func(self, *args, **kwargs)
#x1B[1m#x1B[.../db/postgres/decorators.py#x1B[0m:93: in inner
    raise type(e)(f"{e!r}\nSQL: {sql}").with_traceback(e.__traceback__)
#x1B[1m#x1B[.../db/postgres/decorators.py#x1B[0m:91: in inner
    return func(self, sql, *args, **kwargs)
#x1B[1m#x1B[.../db/postgres/base.py#x1B[0m:84: in execute
    return self.cursor.execute(sql, clean_bad_params(params))
#x1B[1m#x1B[31mE   django.db.utils.ProgrammingError: UndefinedTable('relation "replays_replaydeletionjob" does not exist\nLINE 1: ...query", "replays_replaydeletionjob"."offset" FROM "replays_r...\n                                                             ^\n')#x1B[0m
#x1B[1m#x1B[31mE   SQL: SELECT "replays_replaydeletionjob"."id", "replays_replaydeletionjob"."date_updated", "replays_replaydeletionjob"."date_added", "replays_replaydeletionjob"."range_start", "replays_replaydeletionjob"."range_end", "replays_replaydeletionjob"."environments", "replays_replaydeletionjob"."organization_id", "replays_replaydeletionjob"."project_id", "replays_replaydeletionjob"."status", "replays_replaydeletionjob"."query", "replays_replaydeletionjob"."offset" FROM "replays_replaydeletionjob" ORDER BY "replays_replaydeletionjob"."id" ASC#x1B[0m
tests.sentry.workflow_engine.migrations.test_0070_migrate_remaining_anomaly_detection_alerts.MigrateAnomalyDetectionAlertsTest::test_skip_correctly_dual_written_rule
Stack Traces | 0.006s run time
#x1B[1m#x1B[.../db/postgres/decorators.py#x1B[0m:91: in inner
    return func(self, sql, *args, **kwargs)
#x1B[1m#x1B[.../db/postgres/base.py#x1B[0m:84: in execute
    return self.cursor.execute(sql, clean_bad_params(params))
#x1B[1m#x1B[31mE   psycopg2.errors.UndefinedTable: relation "replays_replaydeletionjob" does not exist#x1B[0m
#x1B[1m#x1B[31mE   LINE 1: ...query", "replays_replaydeletionjob"."offset" FROM "replays_r...#x1B[0m
#x1B[1m#x1B[31mE                                                                ^#x1B[0m

#x1B[33mDuring handling of the above exception, another exception occurred:#x1B[0m
#x1B[1m#x1B[31m.venv/lib/python3.13.../db/backends/utils.py#x1B[0m:105: in _execute
    return self.cursor.execute(sql, params)
#x1B[1m#x1B[.../db/postgres/decorators.py#x1B[0m:77: in inner
    raise_the_exception(self.db, e)
#x1B[1m#x1B[.../db/postgres/decorators.py#x1B[0m:75: in inner
    return func(self, *args, **kwargs)
#x1B[1m#x1B[.../db/postgres/decorators.py#x1B[0m:18: in inner
    return func(self, *args, **kwargs)
#x1B[1m#x1B[.../db/postgres/decorators.py#x1B[0m:93: in inner
    raise type(e)(f"{e!r}\nSQL: {sql}").with_traceback(e.__traceback__)
#x1B[1m#x1B[.../db/postgres/decorators.py#x1B[0m:91: in inner
    return func(self, sql, *args, **kwargs)
#x1B[1m#x1B[.../db/postgres/base.py#x1B[0m:84: in execute
    return self.cursor.execute(sql, clean_bad_params(params))
#x1B[1m#x1B[31mE   psycopg2.errors.UndefinedTable: UndefinedTable('relation "replays_replaydeletionjob" does not exist\nLINE 1: ...query", "replays_replaydeletionjob"."offset" FROM "replays_r...\n                                                             ^\n')#x1B[0m
#x1B[1m#x1B[31mE   SQL: SELECT "replays_replaydeletionjob"."id", "replays_replaydeletionjob"."date_updated", "replays_replaydeletionjob"."date_added", "replays_replaydeletionjob"."range_start", "replays_replaydeletionjob"."range_end", "replays_replaydeletionjob"."environments", "replays_replaydeletionjob"."organization_id", "replays_replaydeletionjob"."project_id", "replays_replaydeletionjob"."status", "replays_replaydeletionjob"."query", "replays_replaydeletionjob"."offset" FROM "replays_replaydeletionjob" ORDER BY "replays_replaydeletionjob"."id" ASC#x1B[0m

#x1B[33mThe above exception was the direct cause of the following exception:#x1B[0m
#x1B[1m#x1B[31m.venv/lib/python3.13...................../site-packages/pytest_django/plugin.py#x1B[0m:565: in _django_setup_unittest
    request.getfixturevalue("django_db_setup")
#x1B[1m#x1B[31m.venv/lib/python3.13...................../site-packages/pytest_django/plugin.py#x1B[0m:565: in _django_setup_unittest
    request.getfixturevalue("django_db_setup")
#x1B[1m#x1B[31m.venv/lib/python3.13...................../site-packages/pytest_django/plugin.py#x1B[0m:565: in _django_setup_unittest
    request.getfixturevalue("django_db_setup")
#x1B[1m#x1B[31m.venv/lib/python3.13...................../site-packages/pytest_django/plugin.py#x1B[0m:565: in _django_setup_unittest
    request.getfixturevalue("django_db_setup")
#x1B[1m#x1B[31m.venv/lib/python3.13...................../site-packages/pytest_django/plugin.py#x1B[0m:565: in _django_setup_unittest
    request.getfixturevalue("django_db_setup")
#x1B[1m#x1B[31m.venv/lib/python3.13...................../site-packages/pytest_django/plugin.py#x1B[0m:565: in _django_setup_unittest
    request.getfixturevalue("django_db_setup")
#x1B[1m#x1B[31m.venv/lib/python3.13...................../site-packages/pytest_django/plugin.py#x1B[0m:565: in _django_setup_unittest
    request.getfixturevalue("django_db_setup")
#x1B[1m#x1B[31m.venv/lib/python3.13.../site-packages/pytest_django/fixtures.py#x1B[0m:144: in django_db_setup
    db_cfg = setup_databases(
#x1B[1m#x1B[31m.venv/lib/python3.13.../django/test/utils.py#x1B[0m:239: in setup_databases
    serialize_connection.creation.serialize_db_to_string()
#x1B[1m#x1B[31m.venv/lib/python3.13.../backends/base/creation.py#x1B[0m:145: in serialize_db_to_string
    serializers.serialize("json", get_objects(), indent=None, stream=out)
#x1B[1m#x1B[31m.venv/lib/python3.13.../core/serializers/__init__.py#x1B[0m:134: in serialize
    s.serialize(queryset, **options)
#x1B[1m#x1B[31m.venv/lib/python3.13.../core/serializers/base.py#x1B[0m:109: in serialize
    for count, obj in enumerate(queryset, start=1):
#x1B[1m#x1B[31m.venv/lib/python3.13.../backends/base/creation.py#x1B[0m:141: in get_objects
    yield from queryset.iterator(chunk_size=chunk_size)
#x1B[1m#x1B[31m.venv/lib/python3.13.../db/models/query.py#x1B[0m:502: in _iterator
    yield from iterable
#x1B[1m#x1B[31m.venv/lib/python3.13.../db/models/query.py#x1B[0m:91: in __iter__
    results = compiler.execute_sql(
#x1B[1m#x1B[31m.venv/lib/python3.13.../models/sql/compiler.py#x1B[0m:1623: in execute_sql
    cursor.execute(sql, params)
#x1B[1m#x1B[31m.venv/lib/python3.13.../site-packages/sentry_sdk/utils.py#x1B[0m:1809: in runner
    return original_function(*args, **kwargs)
#x1B[1m#x1B[31m.venv/lib/python3.13.../db/backends/utils.py#x1B[0m:79: in execute
    return self._execute_with_wrappers(
#x1B[1m#x1B[31m.venv/lib/python3.13.../db/backends/utils.py#x1B[0m:92: in _execute_with_wrappers
    return executor(sql, params, many, context)
#x1B[1m#x1B[31m.venv/lib/python3.13.../db/backends/utils.py#x1B[0m:100: in _execute
    with self.db.wrap_database_errors:
#x1B[1m#x1B[31m.venv/lib/python3.13.../django/db/utils.py#x1B[0m:91: in __exit__
    raise dj_exc_value.with_traceback(traceback) from exc_value
#x1B[1m#x1B[31m.venv/lib/python3.13.../db/backends/utils.py#x1B[0m:105: in _execute
    return self.cursor.execute(sql, params)
#x1B[1m#x1B[.../db/postgres/decorators.py#x1B[0m:77: in inner
    raise_the_exception(self.db, e)
#x1B[1m#x1B[.../db/postgres/decorators.py#x1B[0m:75: in inner
    return func(self, *args, **kwargs)
#x1B[1m#x1B[.../db/postgres/decorators.py#x1B[0m:18: in inner
    return func(self, *args, **kwargs)
#x1B[1m#x1B[.../db/postgres/decorators.py#x1B[0m:93: in inner
    raise type(e)(f"{e!r}\nSQL: {sql}").with_traceback(e.__traceback__)
#x1B[1m#x1B[.../db/postgres/decorators.py#x1B[0m:91: in inner
    return func(self, sql, *args, **kwargs)
#x1B[1m#x1B[.../db/postgres/base.py#x1B[0m:84: in execute
    return self.cursor.execute(sql, clean_bad_params(params))
#x1B[1m#x1B[31mE   django.db.utils.ProgrammingError: UndefinedTable('relation "replays_replaydeletionjob" does not exist\nLINE 1: ...query", "replays_replaydeletionjob"."offset" FROM "replays_r...\n                                                             ^\n')#x1B[0m
#x1B[1m#x1B[31mE   SQL: SELECT "replays_replaydeletionjob"."id", "replays_replaydeletionjob"."date_updated", "replays_replaydeletionjob"."date_added", "replays_replaydeletionjob"."range_start", "replays_replaydeletionjob"."range_end", "replays_replaydeletionjob"."environments", "replays_replaydeletionjob"."organization_id", "replays_replaydeletionjob"."project_id", "replays_replaydeletionjob"."status", "replays_replaydeletionjob"."query", "replays_replaydeletionjob"."offset" FROM "replays_replaydeletionjob" ORDER BY "replays_replaydeletionjob"."id" ASC#x1B[0m
tests.sentry.workflow_engine.migrations.test_0071_migrate_remaining_metric_alerts.MigrateMetricAlertsTest::test_create_error
Stack Traces | 0.006s run time
#x1B[1m#x1B[.../db/postgres/decorators.py#x1B[0m:91: in inner
    return func(self, sql, *args, **kwargs)
#x1B[1m#x1B[.../db/postgres/base.py#x1B[0m:84: in execute
    return self.cursor.execute(sql, clean_bad_params(params))
#x1B[1m#x1B[31mE   psycopg2.errors.UndefinedTable: relation "replays_replaydeletionjob" does not exist#x1B[0m
#x1B[1m#x1B[31mE   LINE 1: ...query", "replays_replaydeletionjob"."offset" FROM "replays_r...#x1B[0m
#x1B[1m#x1B[31mE                                                                ^#x1B[0m

#x1B[33mDuring handling of the above exception, another exception occurred:#x1B[0m
#x1B[1m#x1B[31m.venv/lib/python3.13.../db/backends/utils.py#x1B[0m:105: in _execute
    return self.cursor.execute(sql, params)
#x1B[1m#x1B[.../db/postgres/decorators.py#x1B[0m:77: in inner
    raise_the_exception(self.db, e)
#x1B[1m#x1B[.../db/postgres/decorators.py#x1B[0m:75: in inner
    return func(self, *args, **kwargs)
#x1B[1m#x1B[.../db/postgres/decorators.py#x1B[0m:18: in inner
    return func(self, *args, **kwargs)
#x1B[1m#x1B[.../db/postgres/decorators.py#x1B[0m:93: in inner
    raise type(e)(f"{e!r}\nSQL: {sql}").with_traceback(e.__traceback__)
#x1B[1m#x1B[.../db/postgres/decorators.py#x1B[0m:91: in inner
    return func(self, sql, *args, **kwargs)
#x1B[1m#x1B[.../db/postgres/base.py#x1B[0m:84: in execute
    return self.cursor.execute(sql, clean_bad_params(params))
#x1B[1m#x1B[31mE   psycopg2.errors.UndefinedTable: UndefinedTable('relation "replays_replaydeletionjob" does not exist\nLINE 1: ...query", "replays_replaydeletionjob"."offset" FROM "replays_r...\n                                                             ^\n')#x1B[0m
#x1B[1m#x1B[31mE   SQL: SELECT "replays_replaydeletionjob"."id", "replays_replaydeletionjob"."date_updated", "replays_replaydeletionjob"."date_added", "replays_replaydeletionjob"."range_start", "replays_replaydeletionjob"."range_end", "replays_replaydeletionjob"."environments", "replays_replaydeletionjob"."organization_id", "replays_replaydeletionjob"."project_id", "replays_replaydeletionjob"."status", "replays_replaydeletionjob"."query", "replays_replaydeletionjob"."offset" FROM "replays_replaydeletionjob" ORDER BY "replays_replaydeletionjob"."id" ASC#x1B[0m

#x1B[33mThe above exception was the direct cause of the following exception:#x1B[0m
#x1B[1m#x1B[31m.venv/lib/python3.13......................../site-packages/pytest_django/plugin.py#x1B[0m:565: in _django_setup_unittest
    request.getfixturevalue("django_db_setup")
#x1B[1m#x1B[31m.venv/lib/python3.13......................../site-packages/pytest_django/plugin.py#x1B[0m:565: in _django_setup_unittest
    request.getfixturevalue("django_db_setup")
#x1B[1m#x1B[31m.venv/lib/python3.13......................../site-packages/pytest_django/plugin.py#x1B[0m:565: in _django_setup_unittest
    request.getfixturevalue("django_db_setup")
#x1B[1m#x1B[31m.venv/lib/python3.13......................../site-packages/pytest_django/plugin.py#x1B[0m:565: in _django_setup_unittest
    request.getfixturevalue("django_db_setup")
#x1B[1m#x1B[31m.venv/lib/python3.13......................../site-packages/pytest_django/plugin.py#x1B[0m:565: in _django_setup_unittest
    request.getfixturevalue("django_db_setup")
#x1B[1m#x1B[31m.venv/lib/python3.13......................../site-packages/pytest_django/plugin.py#x1B[0m:565: in _django_setup_unittest
    request.getfixturevalue("django_db_setup")
#x1B[1m#x1B[31m.venv/lib/python3.13......................../site-packages/pytest_django/plugin.py#x1B[0m:565: in _django_setup_unittest
    request.getfixturevalue("django_db_setup")
#x1B[1m#x1B[31m.venv/lib/python3.13......................../site-packages/pytest_django/plugin.py#x1B[0m:565: in _django_setup_unittest
    request.getfixturevalue("django_db_setup")
#x1B[1m#x1B[31m.venv/lib/python3.13.../site-packages/pytest_django/fixtures.py#x1B[0m:144: in django_db_setup
    db_cfg = setup_databases(
#x1B[1m#x1B[31m.venv/lib/python3.13.../django/test/utils.py#x1B[0m:239: in setup_databases
    serialize_connection.creation.serialize_db_to_string()
#x1B[1m#x1B[31m.venv/lib/python3.13.../backends/base/creation.py#x1B[0m:145: in serialize_db_to_string
    serializers.serialize("json", get_objects(), indent=None, stream=out)
#x1B[1m#x1B[31m.venv/lib/python3.13.../core/serializers/__init__.py#x1B[0m:134: in serialize
    s.serialize(queryset, **options)
#x1B[1m#x1B[31m.venv/lib/python3.13.../core/serializers/base.py#x1B[0m:109: in serialize
    for count, obj in enumerate(queryset, start=1):
#x1B[1m#x1B[31m.venv/lib/python3.13.../backends/base/creation.py#x1B[0m:141: in get_objects
    yield from queryset.iterator(chunk_size=chunk_size)
#x1B[1m#x1B[31m.venv/lib/python3.13.../db/models/query.py#x1B[0m:502: in _iterator
    yield from iterable
#x1B[1m#x1B[31m.venv/lib/python3.13.../db/models/query.py#x1B[0m:91: in __iter__
    results = compiler.execute_sql(
#x1B[1m#x1B[31m.venv/lib/python3.13.../models/sql/compiler.py#x1B[0m:1623: in execute_sql
    cursor.execute(sql, params)
#x1B[1m#x1B[31m.venv/lib/python3.13.../site-packages/sentry_sdk/utils.py#x1B[0m:1809: in runner
    return original_function(*args, **kwargs)
#x1B[1m#x1B[31m.venv/lib/python3.13.../db/backends/utils.py#x1B[0m:79: in execute
    return self._execute_with_wrappers(
#x1B[1m#x1B[31m.venv/lib/python3.13.../db/backends/utils.py#x1B[0m:92: in _execute_with_wrappers
    return executor(sql, params, many, context)
#x1B[1m#x1B[31m.venv/lib/python3.13.../db/backends/utils.py#x1B[0m:100: in _execute
    with self.db.wrap_database_errors:
#x1B[1m#x1B[31m.venv/lib/python3.13.../django/db/utils.py#x1B[0m:91: in __exit__
    raise dj_exc_value.with_traceback(traceback) from exc_value
#x1B[1m#x1B[31m.venv/lib/python3.13.../db/backends/utils.py#x1B[0m:105: in _execute
    return self.cursor.execute(sql, params)
#x1B[1m#x1B[.../db/postgres/decorators.py#x1B[0m:77: in inner
    raise_the_exception(self.db, e)
#x1B[1m#x1B[.../db/postgres/decorators.py#x1B[0m:75: in inner
    return func(self, *args, **kwargs)
#x1B[1m#x1B[.../db/postgres/decorators.py#x1B[0m:18: in inner
    return func(self, *args, **kwargs)
#x1B[1m#x1B[.../db/postgres/decorators.py#x1B[0m:93: in inner
    raise type(e)(f"{e!r}\nSQL: {sql}").with_traceback(e.__traceback__)
#x1B[1m#x1B[.../db/postgres/decorators.py#x1B[0m:91: in inner
    return func(self, sql, *args, **kwargs)
#x1B[1m#x1B[.../db/postgres/base.py#x1B[0m:84: in execute
    return self.cursor.execute(sql, clean_bad_params(params))
#x1B[1m#x1B[31mE   django.db.utils.ProgrammingError: UndefinedTable('relation "replays_replaydeletionjob" does not exist\nLINE 1: ...query", "replays_replaydeletionjob"."offset" FROM "replays_r...\n                                                             ^\n')#x1B[0m
#x1B[1m#x1B[31mE   SQL: SELECT "replays_replaydeletionjob"."id", "replays_replaydeletionjob"."date_updated", "replays_replaydeletionjob"."date_added", "replays_replaydeletionjob"."range_start", "replays_replaydeletionjob"."range_end", "replays_replaydeletionjob"."environments", "replays_replaydeletionjob"."organization_id", "replays_replaydeletionjob"."project_id", "replays_replaydeletionjob"."status", "replays_replaydeletionjob"."query", "replays_replaydeletionjob"."offset" FROM "replays_replaydeletionjob" ORDER BY "replays_replaydeletionjob"."id" ASC#x1B[0m

To view more test analytics, go to the Test Analytics Dashboard
📋 Got 3 mins? Take this short survey to help us improve Test Analytics.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Scope: Backend Automatically applied to PRs that change backend components
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant