Audit event streaming worker cannot be called inside a transaction
## Overview After we rolled out [Audit Event Streaming](https://docs.gitlab.com/ee/administration/audit_event_streaming.html), @manojmj noticed a spike in caught exceptions in Sentry relating to the sidekiq worker. (https://sentry.gitlab.net/gitlab/gitlabcom/?query=is%3Aunresolved+AuditEventStreamingWorker.perform_async) **Internal link** This is because some auditable actions (transferring projects, creating/updating feature flags) are done within a transactions and it is not possible to enqueue a sidekiq job from within a transaction. ## Impact * Exception occurring with a relatively small proportion of Audit Events, and only where the [`ff_external_audit_events_namespace` feature flag](https://docs.gitlab.com/ee/administration/audit_event_streaming.html) is enabled. * Exception is tracked within sentry. * Controller action is not halted, user-impact is minimal in the UI. * Audit event is saved, as expected. * **Event expected to be streamed, is not streamed.** ## Suggested resolution * Use the AfterCommitQueue concern to perform the streaming after the transaction has finished. Thanks @manojmj for the bug report and suggested resolution :purple_heart:
issue