Skip to content

Projects::VulnerabilityFeedbackController#create creates a subtransaction

@jschafer We detected a subtransaction in Projects::VulnerabilityFeedbackController#create, likely due to !106889 (merged):

    "savepoint_backtraces": [
        [
          "lib/gitlab/database/transaction/observer.rb:42:in `block in register!'",
          "ee/app/models/ee/project.rb:87:in `lock_for_confirmation!'",
          "ee/app/services/vulnerabilities/create_service.rb:105:in `finding'",
          "ee/app/services/vulnerabilities/create_service.rb:32:in `block in execute'",
          "app/models/concerns/cross_database_modification.rb:92:in `block in transaction'",
          "lib/gitlab/database.rb:333:in `block in transaction'",
          "lib/gitlab/database.rb:332:in `transaction'",
          "app/models/concerns/cross_database_modification.rb:83:in `transaction'",
          "ee/app/services/vulnerabilities/create_service.rb:31:in `execute'",
          "ee/app/services/vulnerabilities/find_or_create_from_security_finding_service.rb:29:in `find_or_create_vulnerability'",
          "ee/app/services/vulnerabilities/find_or_create_from_security_finding_service.rb:15:in `block in execute'",
          "ee/app/services/vulnerabilities/find_or_create_from_security_finding_service.rb:63:in `with_vulnerability_finding'",
          "ee/app/services/vulnerabilities/find_or_create_from_security_finding_service.rb:14:in `execute'",
          "ee/app/services/vulnerability_feedback/create_service.rb:177:in `create_vulnerability'",
          "ee/app/services/vulnerability_feedback/create_service.rb:124:in `create_vulnerability_issue_link'",
          "ee/app/services/vulnerability_feedback/create_service.rb:78:in `block in create_issue'",
          "app/models/concerns/cross_database_modification.rb:92:in `block in transaction'",
          "lib/gitlab/database.rb:333:in `block in transaction'",
          "lib/gitlab/database.rb:332:in `transaction'",
          "app/models/concerns/cross_database_modification.rb:83:in `transaction'",
          "ee/app/services/vulnerability_feedback/create_service.rb:61:in `create_issue'",
          "ee/app/services/vulnerability_feedback/create_service.rb:11:in `execute'",
          "ee/app/controllers/projects/vulnerability_feedback_controller.rb:28:in `create'",
          "ee/lib/gitlab/ip_address_state.rb:10:in `with'",
          "ee/app/controllers/ee/application_controller.rb:46:in `set_current_ip_address'",
          "app/controllers/application_controller.rb:533:in `set_current_admin'",
          "lib/gitlab/session.rb:11:in `with_session'",
          "app/controllers/application_controller.rb:524:in `set_session_storage'",
          "app/controllers/application_controller.rb:512:in `set_locale'",
          "app/controllers/application_controller.rb:506:in `set_current_context'",
          "ee/lib/omni_auth/strategies/group_saml.rb:41:in `other_phase'",
          "lib/gitlab/jira/middleware.rb:19:in `call'",
          "lib/gitlab/database/query_analyzer.rb:37:in `within'"
        ]

More details:

  1. https://about.gitlab.com/blog/2021/09/29/why-we-spent-the-last-month-eliminating-postgresql-subtransactions/
  2. https://gitlab.com/gitlab-com/runbooks/-/blob/master/docs/patroni/postgresql-subtransactions.md