Statement timeout while locking tuple in relation "namespaces"
Related to #351274 (comment 823440723)
When a new project is created, we want to create also a project namespace for the project (!70972 (merged)). But creation of the namespace may time out as reported in #351274 (comment 823440723).
I couldn't find corresponding error in Sentry, but I found very similar/same errors for groups endpoint - https://sentry.gitlab.net/gitlab/gitlabcom/issues/3167671/?query=is%3Aunresolved%20while%20locking%20tuple, so I tend to believe the root cause is same: it seems that timeout occurs when attempting to acquire lock on root namespace (when syncing traversal ids):
PG::QueryCanceled: ERROR: canceling statement due to statement timeout
CONTEXT: while locking tuple (244123,8) in relation "namespaces"
from activerecord (6.1.4.4) lib/active_record/connection_adapters/postgresql_adapter.rb:672:in `exec_params'
from activerecord (6.1.4.4) lib/active_record/autosave_association.rb:252:in `reload'
from attr_encrypted (3.1.0) lib/attr_encrypted/adapters/active_record.rb:11:in `reload'
from carrierwave (1.3.2) lib/carrierwave/orm/activerecord.rb:89:in `reload'
from activerecord (6.1.4.4) lib/active_record/locking/pessimistic.rb:77:in `lock!'
from app/models/namespace/traversal_hierarchy.rb:42:in `block in sync_traversal_ids!'
from activerecord (6.1.4.4) lib/active_record/connection_adapters/abstract/database_statements.rb:318:in `transaction'
from lib/gitlab/database/load_balancing/connection_proxy.rb:126:in `block in write_using_load_balancer'
from lib/gitlab/database/load_balancing/load_balancer.rb:112:in `block in read_write'
from lib/gitlab/database/load_balancing/load_balancer.rb:179:in `retry_with_backoff'
from lib/gitlab/database/load_balancing/load_balancer.rb:110:in `read_write'
from lib/gitlab/database/load_balancing/connection_proxy.rb:125:in `write_using_load_balancer'
from lib/gitlab/database/load_balancing/connection_proxy.rb:77:in `transaction'
from activerecord (6.1.4.4) lib/active_record/transactions.rb:209:in `transaction'
from lib/gitlab/database.rb:265:in `block in transaction'
from activesupport (6.1.4.4) lib/active_support/notifications.rb:203:in `block in instrument'
from activesupport (6.1.4.4) lib/active_support/notifications/instrumenter.rb:24:in `instrument'
from activesupport (6.1.4.4) lib/active_support/notifications.rb:203:in `instrument'
from lib/gitlab/database.rb:264:in `transaction'
from app/models/concerns/cross_database_modification.rb:64:in `transaction'
from app/models/namespace/traversal_hierarchy.rb:41:in `sync_traversal_ids!'
from app/models/namespaces/traversal/linear.rb:189:in `sync_traversal_ids'
There are not so many errors for projects timeout:
But for now we disabled auto-creation of project namespace when a project is created as users may hit this error on project creation.
