diff options
Diffstat (limited to 'app')
-rw-r--r-- | app/models/user.rb | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/app/models/user.rb b/app/models/user.rb index 05f636c020a..0b358fd4b19 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -40,14 +40,15 @@ class User < ActiveRecord::Base devise :lockable, :recoverable, :rememberable, :trackable, :validatable, :omniauthable, :confirmable, :registerable - # Limit trackable fields to update at most once every hour - alias_method :devise_update_tracked_fields!, :update_tracked_fields! - + # Override Devise::Models::Trackable#update_tracked_fields! + # to limit database writes to at most once every hour def update_tracked_fields!(request) + update_tracked_fields(request) + lease = Gitlab::ExclusiveLease.new("user_update_tracked_fields:#{id}", timeout: 1.hour.to_i) return unless lease.try_obtain - devise_update_tracked_fields!(request) + save(validate: false) end attr_accessor :force_random_password |