Skip to content

Error 500 with new group SAML logins when attempting to persist terms of service

Starting 2022-09-19 05:00, there appears to be an uptick of ActiveRecord::NotNullViolation errors inserting into the term_agreements table:

INSERT INTO "term_agreements" ("term_id", "accepted", "created_at", "updated_at") VALUES ($1, $2, $3, $4) RETURNING "id"

Note that user_id is omitted in the INSERT.

It appears this may have been caused by !85871 (merged). When a new user logs in via SAML, build_new_user has not actually persisted the user ID to the database. user.id is NULL.

https://log.gprd.gitlab.net/goto/cd976a00-3868-11ed-8656-f5f2137823ba shows:

  "exception.backtrace": [
        "lib/gitlab/database/load_balancing/connection_proxy.rb:120:in `block in write_using_load_balancer'",
        "lib/gitlab/database/load_balancing/load_balancer.rb:115:in `block in read_write'",
        "lib/gitlab/database/load_balancing/load_balancer.rb:191:in `retry_with_backoff'",
        "lib/gitlab/database/load_balancing/load_balancer.rb:111:in `read_write'",
        "lib/gitlab/database/load_balancing/connection_proxy.rb:119:in `write_using_load_balancer'",
        "lib/gitlab/database/load_balancing/connection_proxy.rb:61:in `block (2 levels) in <class:ConnectionProxy>'",
        "lib/gitlab/database/load_balancing/connection_proxy.rb:120:in `block in write_using_load_balancer'",
        "lib/gitlab/database/load_balancing/load_balancer.rb:115:in `block in read_write'",
        "lib/gitlab/database/load_balancing/load_balancer.rb:191:in `retry_with_backoff'",
        "lib/gitlab/database/load_balancing/load_balancer.rb:111:in `read_write'",
        "lib/gitlab/database/load_balancing/connection_proxy.rb:119:in `write_using_load_balancer'",
        "lib/gitlab/database/load_balancing/connection_proxy.rb:71:in `transaction'",
        "app/services/users/respond_to_terms_service.rb:15:in `execute'",
        "lib/gitlab/auth/o_auth/user.rb:257:in `persist_accepted_terms_if_required'",
        "lib/gitlab/auth/o_auth/user.rb:222:in `build_new_user'",
        "ee/lib/gitlab/auth/group_saml/user.rb:62:in `build_new_user'",
        "ee/lib/gitlab/auth/group_saml/user.rb:42:in `block in gl_user'",
        "lib/gitlab/utils/strong_memoize.rb:44:in `strong_memoize'",
        "ee/lib/gitlab/auth/group_saml/user.rb:41:in `gl_user'",
        "lib/gitlab/auth/o_auth/user.rb:34:in `persisted?'",
        "lib/gitlab/auth/o_auth/user.rb:38:in `new?'",
        "app/controllers/omniauth_callbacks_controller.rb:163:in `sign_in_user_flow'",
        "app/controllers/omniauth_callbacks_controller.rb:131:in `omniauth_flow'",
        "ee/app/controllers/groups/omniauth_callbacks_controller.rb:18:in `group_saml'",

image

ZD: https://gitlab.zendesk.com/agent/tickets/327275

Edited by Stan Hu