Commit 4ff5b766 authored by Nick Thomas's avatar Nick Thomas

Merge branch 'sh-guard-read-only-user-updates' into 'master'

Don't attempt to update user tracked fields if database is in read-only

Closes gitlab-ee#4972

See merge request gitlab-org/gitlab-ce!17200
parents 53f290b6 46e6a9f8
...@@ -59,6 +59,8 @@ class User < ActiveRecord::Base ...@@ -59,6 +59,8 @@ class User < ActiveRecord::Base
# Override Devise::Models::Trackable#update_tracked_fields! # Override Devise::Models::Trackable#update_tracked_fields!
# to limit database writes to at most once every hour # to limit database writes to at most once every hour
def update_tracked_fields!(request) def update_tracked_fields!(request)
return if Gitlab::Database.read_only?
update_tracked_fields(request) update_tracked_fields(request)
lease = Gitlab::ExclusiveLease.new("user_update_tracked_fields:#{id}", timeout: 1.hour.to_i) lease = Gitlab::ExclusiveLease.new("user_update_tracked_fields:#{id}", timeout: 1.hour.to_i)
......
---
title: Don't attempt to update user tracked fields if database is in read-only
merge_request:
author:
type: fixed
...@@ -496,6 +496,14 @@ describe User do ...@@ -496,6 +496,14 @@ describe User do
user2.update_tracked_fields!(request) user2.update_tracked_fields!(request)
end.to change { user2.reload.current_sign_in_at } end.to change { user2.reload.current_sign_in_at }
end end
it 'does not write if the DB is in read-only mode' do
expect(Gitlab::Database).to receive(:read_only?).and_return(true)
expect do
user.update_tracked_fields!(request)
end.not_to change { user.reload.current_sign_in_at }
end
end end
shared_context 'user keys' do shared_context 'user keys' do
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment