diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-10-21 07:08:36 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-10-21 07:08:36 +0000 |
commit | 48aff82709769b098321c738f3444b9bdaa694c6 (patch) | |
tree | e00c7c43e2d9b603a5a6af576b1685e400410dee /app/models/application_record.rb | |
parent | 879f5329ee916a948223f8f43d77fba4da6cd028 (diff) | |
download | gitlab-ce-48aff82709769b098321c738f3444b9bdaa694c6.tar.gz |
Add latest changes from gitlab-org/gitlab@13-5-stable-eev13.5.0-rc42
Diffstat (limited to 'app/models/application_record.rb')
-rw-r--r-- | app/models/application_record.rb | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/app/models/application_record.rb b/app/models/application_record.rb index 6ffb9b7642a..3542bb90dc0 100644 --- a/app/models/application_record.rb +++ b/app/models/application_record.rb @@ -52,6 +52,16 @@ class ApplicationRecord < ActiveRecord::Base end end + # Start a new transaction with a shorter-than-usual statement timeout. This is + # currently one third of the default 15-second timeout + def self.with_fast_statement_timeout + transaction(requires_new: true) do + connection.exec_query("SET LOCAL statement_timeout = 5000") + + yield + end + end + def self.safe_find_or_create_by(*args, &block) safe_ensure_unique(retries: 1) do find_or_create_by(*args, &block) @@ -61,4 +71,8 @@ class ApplicationRecord < ActiveRecord::Base def self.underscore Gitlab::SafeRequestStore.fetch("model:#{self}:underscore") { self.to_s.underscore } end + + def self.where_exists(query) + where('EXISTS (?)', query.select(1)) + end end |