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'",
Edited by Stan Hu