Skip to content

chore(member merge): placeholder email for sentry apps #86210

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

Draft
wants to merge 6 commits into
base: master
Choose a base branch
from

Conversation

mifu67
Copy link
Contributor

@mifu67 mifu67 commented Mar 3, 2025

When creating a Sentry App proxy user, we should set a placeholder email so the field is not null.

@github-actions github-actions bot added the Scope: Backend Automatically applied to PRs that change backend components label Mar 3, 2025
Copy link

codecov bot commented Mar 3, 2025

⚠️ Parser warning

The parser emitted a warning. Please review your JUnit XML file:

Warning while parsing testcase attributes: Limit of string is 1000 chars, for name, we got 2083 at 1:156614 in /home/runner/work/sentry/sentry/.artifacts/pytest.junit.xml

❌ 6 Tests Failed:

Tests completed Failed Passed Skipped
25959 6 25953 206
View the top 3 failed test(s) by shortest run time
tests.sentry.sentry_apps.services.test_app::test_create_internal_integration_for_channel_request[MONOLITH]
Stack Traces | 3.32s 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.StringDataRightTruncation: value too long for type character varying(75)#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.StringDataRightTruncation: StringDataRightTruncation('value too long for type character varying(75)\n')#x1B[0m
#x1B[1m#x1B[31mE   SQL: UPDATE "sentry_organizationmember" SET "user_is_active" = %s, "user_email" = %s WHERE "sentry_organizationmember"."user_id" = %s#x1B[0m

#x1B[33mThe above exception was the direct cause of the following exception:#x1B[0m
#x1B[1m#x1B[.../hybridcloud/models/outbox.py#x1B[0m:312: in process
    coalesced.send_signal()
#x1B[1m#x1B[.../hybridcloud/models/outbox.py#x1B[0m:460: in send_signal
    process_control_outbox.send(
#x1B[1m#x1B[31m.venv/lib/python3.13.../django/dispatch/dispatcher.py#x1B[0m:189: in send
    response = receiver(signal=self, sender=sender, **named)
#x1B[1m#x1B[.../hybridcloud/outbox/category.py#x1B[0m:111: in receiver
    maybe_instance.handle_async_replication(
#x1B[1m#x1B[.../users/models/user.py#x1B[0m:593: in handle_async_replication
    organization_service.update_region_user(
#x1B[1m#x1B[.../services/organization/impl.py#x1B[0m:640: in update_region_user
    OrganizationMember.objects.filter(user_id=user.id).update(
#x1B[1m#x1B[.../sentry/silo/base.py#x1B[0m:158: in override
    return original_method(*args, **kwargs)
#x1B[1m#x1B[.../models/manager/base_query_set.py#x1B[0m:89: in update
    return super().update(**kwargs)
#x1B[1m#x1B[31m.venv/lib/python3.13.../db/models/query.py#x1B[0m:1259: in update
    rows = query.get_compiler(self.db).execute_sql(ROW_COUNT)
#x1B[1m#x1B[31m.venv/lib/python3.13.../models/sql/compiler.py#x1B[0m:2060: in execute_sql
    row_count = super().execute_sql(result_type)
#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.../db/backends/utils.py#x1B[0m:122: in execute
    return super().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[.../sentry/testutils/hybrid_cloud.py#x1B[0m:133: in __call__
    return execute(*params)
#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.DataError: StringDataRightTruncation('value too long for type character varying(75)\n')#x1B[0m
#x1B[1m#x1B[31mE   SQL: UPDATE "sentry_organizationmember" SET "user_is_active" = %s, "user_email" = %s WHERE "sentry_organizationmember"."user_id" = %s#x1B[0m

#x1B[33mThe above exception was the direct cause of the following exception:#x1B[0m
#x1B[1m#x1B[.../sentry_apps/services/test_app.py#x1B[0m:14: in test_create_internal_integration_for_channel_request
    first_app = app_service.create_internal_integration_for_channel_request(
#x1B[1m#x1B[.../services/app/impl.py#x1B[0m:377: in create_internal_integration_for_channel_request
    ).run(user=admin_user)
#x1B[1m#x1B[.../sentry/sentry_apps/logic.py#x1B[0m:316: in run
    with transaction.atomic(router.db_for_write(User)), in_test_hide_transaction_boundary():
#x1B[1m#x1B[.../sentry/testutils/hybrid_cloud.py#x1B[0m:225: in new_atomic_exit
    _old_atomic_exit(self, exc_type, *args, **kwds)
#x1B[1m#x1B[.../sentry/utils/db.py#x1B[0m:67: in _exit
    rv = original_exit(self, exc_type, exc_value, traceback)
#x1B[1m#x1B[31m.venv/lib/python3.13.../django/db/transaction.py#x1B[0m:307: in __exit__
    connection.set_autocommit(True)
#x1B[1m#x1B[31m.venv/lib/python3.13.../backends/base/base.py#x1B[0m:491: in set_autocommit
    self.run_and_clear_commit_hooks()
#x1B[1m#x1B[.../testutils/pytest/stale_database_reads.py#x1B[0m:134: in run_and_clear_commit_hooks
    return old_run_and_clear_commit_hooks(*args, **kwargs)
#x1B[1m#x1B[31m.venv/lib/python3.13.../backends/base/base.py#x1B[0m:769: in run_and_clear_commit_hooks
    func()
#x1B[1m#x1B[.../hybridcloud/models/outbox.py#x1B[0m:202: in <lambda>
    transaction.on_commit(lambda: self.drain_shard(), using=router.db_for_write(type(self)))
#x1B[1m#x1B[.../hybridcloud/models/outbox.py#x1B[0m:353: in drain_shard
    processed = shard_row.process(is_synchronous_flush=not flush_all)
#x1B[1m#x1B[.../hybridcloud/models/outbox.py#x1B[0m:314: in process
    raise OutboxFlushError(
#x1B[1m#x1B[31mE   sentry.hybridcloud.models.outbox.OutboxFlushError: Could not flush shard category=0 (USER_UPDATE)#x1B[0m
tests.sentry.sentry_apps.services.test_app::test_get_internal_integrations[MONOLITH]
Stack Traces | 3.78s 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.StringDataRightTruncation: value too long for type character varying(75)#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.StringDataRightTruncation: StringDataRightTruncation('value too long for type character varying(75)\n')#x1B[0m
#x1B[1m#x1B[31mE   SQL: UPDATE "sentry_organizationmember" SET "user_is_active" = %s, "user_email" = %s WHERE "sentry_organizationmember"."user_id" = %s#x1B[0m

#x1B[33mThe above exception was the direct cause of the following exception:#x1B[0m
#x1B[1m#x1B[.../hybridcloud/models/outbox.py#x1B[0m:312: in process
    coalesced.send_signal()
#x1B[1m#x1B[.../hybridcloud/models/outbox.py#x1B[0m:460: in send_signal
    process_control_outbox.send(
#x1B[1m#x1B[31m.venv/lib/python3.13.../django/dispatch/dispatcher.py#x1B[0m:189: in send
    response = receiver(signal=self, sender=sender, **named)
#x1B[1m#x1B[.../hybridcloud/outbox/category.py#x1B[0m:111: in receiver
    maybe_instance.handle_async_replication(
#x1B[1m#x1B[.../users/models/user.py#x1B[0m:593: in handle_async_replication
    organization_service.update_region_user(
#x1B[1m#x1B[.../services/organization/impl.py#x1B[0m:640: in update_region_user
    OrganizationMember.objects.filter(user_id=user.id).update(
#x1B[1m#x1B[.../sentry/silo/base.py#x1B[0m:158: in override
    return original_method(*args, **kwargs)
#x1B[1m#x1B[.../models/manager/base_query_set.py#x1B[0m:89: in update
    return super().update(**kwargs)
#x1B[1m#x1B[31m.venv/lib/python3.13.../db/models/query.py#x1B[0m:1259: in update
    rows = query.get_compiler(self.db).execute_sql(ROW_COUNT)
#x1B[1m#x1B[31m.venv/lib/python3.13.../models/sql/compiler.py#x1B[0m:2060: in execute_sql
    row_count = super().execute_sql(result_type)
#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.../db/backends/utils.py#x1B[0m:122: in execute
    return super().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[.../sentry/testutils/hybrid_cloud.py#x1B[0m:133: in __call__
    return execute(*params)
#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.DataError: StringDataRightTruncation('value too long for type character varying(75)\n')#x1B[0m
#x1B[1m#x1B[31mE   SQL: UPDATE "sentry_organizationmember" SET "user_is_active" = %s, "user_email" = %s WHERE "sentry_organizationmember"."user_id" = %s#x1B[0m

#x1B[33mThe above exception was the direct cause of the following exception:#x1B[0m
#x1B[1m#x1B[.../sentry_apps/services/test_app.py#x1B[0m:248: in test_get_internal_integrations
    internal_app = Factories.create_internal_integration(
#x1B[1m#x1B[.../hostedtoolcache/Python/3.13.1.../x64/lib/python3.13/contextlib.py#x1B[0m:85: in inner
    return func(*args, **kwds)
#x1B[1m#x1B[.../sentry/testutils/factories.py#x1B[0m:1212: in create_internal_integration
    app = SentryAppCreator(is_internal=True, **args).run(
#x1B[1m#x1B[.../sentry/sentry_apps/logic.py#x1B[0m:316: in run
    with transaction.atomic(router.db_for_write(User)), in_test_hide_transaction_boundary():
#x1B[1m#x1B[.../sentry/testutils/hybrid_cloud.py#x1B[0m:225: in new_atomic_exit
    _old_atomic_exit(self, exc_type, *args, **kwds)
#x1B[1m#x1B[.../sentry/utils/db.py#x1B[0m:67: in _exit
    rv = original_exit(self, exc_type, exc_value, traceback)
#x1B[1m#x1B[31m.venv/lib/python3.13.../django/db/transaction.py#x1B[0m:307: in __exit__
    connection.set_autocommit(True)
#x1B[1m#x1B[31m.venv/lib/python3.13.../backends/base/base.py#x1B[0m:491: in set_autocommit
    self.run_and_clear_commit_hooks()
#x1B[1m#x1B[.../testutils/pytest/stale_database_reads.py#x1B[0m:134: in run_and_clear_commit_hooks
    return old_run_and_clear_commit_hooks(*args, **kwargs)
#x1B[1m#x1B[31m.venv/lib/python3.13.../backends/base/base.py#x1B[0m:769: in run_and_clear_commit_hooks
    func()
#x1B[1m#x1B[.../hybridcloud/models/outbox.py#x1B[0m:202: in <lambda>
    transaction.on_commit(lambda: self.drain_shard(), using=router.db_for_write(type(self)))
#x1B[1m#x1B[.../hybridcloud/models/outbox.py#x1B[0m:353: in drain_shard
    processed = shard_row.process(is_synchronous_flush=not flush_all)
#x1B[1m#x1B[.../hybridcloud/models/outbox.py#x1B[0m:314: in process
    raise OutboxFlushError(
#x1B[1m#x1B[31mE   sentry.hybridcloud.models.outbox.OutboxFlushError: Could not flush shard category=0 (USER_UPDATE)#x1B[0m
tests.sentry.sentry_apps.services.test_app::test_find_alertable_services[MONOLITH]
Stack Traces | 4.09s 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.StringDataRightTruncation: value too long for type character varying(75)#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.StringDataRightTruncation: StringDataRightTruncation('value too long for type character varying(75)\n')#x1B[0m
#x1B[1m#x1B[31mE   SQL: UPDATE "sentry_organizationmember" SET "user_is_active" = %s, "user_email" = %s WHERE "sentry_organizationmember"."user_id" = %s#x1B[0m

#x1B[33mThe above exception was the direct cause of the following exception:#x1B[0m
#x1B[1m#x1B[.../hybridcloud/models/outbox.py#x1B[0m:312: in process
    coalesced.send_signal()
#x1B[1m#x1B[.../hybridcloud/models/outbox.py#x1B[0m:460: in send_signal
    process_control_outbox.send(
#x1B[1m#x1B[31m.venv/lib/python3.13.../django/dispatch/dispatcher.py#x1B[0m:189: in send
    response = receiver(signal=self, sender=sender, **named)
#x1B[1m#x1B[.../hybridcloud/outbox/category.py#x1B[0m:111: in receiver
    maybe_instance.handle_async_replication(
#x1B[1m#x1B[.../users/models/user.py#x1B[0m:593: in handle_async_replication
    organization_service.update_region_user(
#x1B[1m#x1B[.../services/organization/impl.py#x1B[0m:640: in update_region_user
    OrganizationMember.objects.filter(user_id=user.id).update(
#x1B[1m#x1B[.../sentry/silo/base.py#x1B[0m:158: in override
    return original_method(*args, **kwargs)
#x1B[1m#x1B[.../models/manager/base_query_set.py#x1B[0m:89: in update
    return super().update(**kwargs)
#x1B[1m#x1B[31m.venv/lib/python3.13.../db/models/query.py#x1B[0m:1259: in update
    rows = query.get_compiler(self.db).execute_sql(ROW_COUNT)
#x1B[1m#x1B[31m.venv/lib/python3.13.../models/sql/compiler.py#x1B[0m:2060: in execute_sql
    row_count = super().execute_sql(result_type)
#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.../db/backends/utils.py#x1B[0m:122: in execute
    return super().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[.../sentry/testutils/hybrid_cloud.py#x1B[0m:133: in __call__
    return execute(*params)
#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.DataError: StringDataRightTruncation('value too long for type character varying(75)\n')#x1B[0m
#x1B[1m#x1B[31mE   SQL: UPDATE "sentry_organizationmember" SET "user_is_active" = %s, "user_email" = %s WHERE "sentry_organizationmember"."user_id" = %s#x1B[0m

#x1B[33mThe above exception was the direct cause of the following exception:#x1B[0m
#x1B[1m#x1B[.../sentry_apps/services/test_app.py#x1B[0m:36: in test_find_alertable_services
    app1 = Factories.create_internal_integration(organization_id=org.id, is_alertable=True)
#x1B[1m#x1B[.../hostedtoolcache/Python/3.13.1.../x64/lib/python3.13/contextlib.py#x1B[0m:85: in inner
    return func(*args, **kwds)
#x1B[1m#x1B[.../sentry/testutils/factories.py#x1B[0m:1212: in create_internal_integration
    app = SentryAppCreator(is_internal=True, **args).run(
#x1B[1m#x1B[.../sentry/sentry_apps/logic.py#x1B[0m:316: in run
    with transaction.atomic(router.db_for_write(User)), in_test_hide_transaction_boundary():
#x1B[1m#x1B[.../sentry/testutils/hybrid_cloud.py#x1B[0m:225: in new_atomic_exit
    _old_atomic_exit(self, exc_type, *args, **kwds)
#x1B[1m#x1B[.../sentry/utils/db.py#x1B[0m:67: in _exit
    rv = original_exit(self, exc_type, exc_value, traceback)
#x1B[1m#x1B[31m.venv/lib/python3.13.../django/db/transaction.py#x1B[0m:307: in __exit__
    connection.set_autocommit(True)
#x1B[1m#x1B[31m.venv/lib/python3.13.../backends/base/base.py#x1B[0m:491: in set_autocommit
    self.run_and_clear_commit_hooks()
#x1B[1m#x1B[.../testutils/pytest/stale_database_reads.py#x1B[0m:134: in run_and_clear_commit_hooks
    return old_run_and_clear_commit_hooks(*args, **kwargs)
#x1B[1m#x1B[31m.venv/lib/python3.13.../backends/base/base.py#x1B[0m:769: in run_and_clear_commit_hooks
    func()
#x1B[1m#x1B[.../hybridcloud/models/outbox.py#x1B[0m:202: in <lambda>
    transaction.on_commit(lambda: self.drain_shard(), using=router.db_for_write(type(self)))
#x1B[1m#x1B[.../hybridcloud/models/outbox.py#x1B[0m:353: in drain_shard
    processed = shard_row.process(is_synchronous_flush=not flush_all)
#x1B[1m#x1B[.../hybridcloud/models/outbox.py#x1B[0m:314: in process
    raise OutboxFlushError(
#x1B[1m#x1B[31mE   sentry.hybridcloud.models.outbox.OutboxFlushError: Could not flush shard category=0 (USER_UPDATE)#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