mirror of
https://github.com/discourse/discourse.git
synced 2025-02-25 18:55:32 -06:00
cleanup so gravatar download failures are consistent
previously we would ignore socket error, but this would mean that there could be conditions where we would keep trying to download gravatars forever (in an hourly job)
This commit is contained in:
@@ -13,7 +13,7 @@ class UserAvatar < ActiveRecord::Base
|
||||
def update_gravatar!
|
||||
DistributedMutex.synchronize("update_gravatar_#{user_id}") do
|
||||
begin
|
||||
self.update_columns(last_gravatar_download_attempt: Time.now)
|
||||
self.update!(last_gravatar_download_attempt: Time.now)
|
||||
|
||||
max = Discourse.avatar_sizes.max
|
||||
email_hash = user_id == Discourse::SYSTEM_USER_ID ? User.email_hash("info@discourse.org") : user.email_hash
|
||||
@@ -47,17 +47,12 @@ class UserAvatar < ActiveRecord::Base
|
||||
end
|
||||
|
||||
gravatar_upload&.destroy!
|
||||
self.gravatar_upload = upload
|
||||
save!
|
||||
self.update!(gravatar_upload: upload)
|
||||
end
|
||||
end
|
||||
end
|
||||
rescue OpenURI::HTTPError
|
||||
save!
|
||||
rescue SocketError
|
||||
# skip saving, we are not connected to the net
|
||||
ensure
|
||||
tempfile.try(:close!)
|
||||
tempfile&.close!
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -74,7 +74,9 @@ describe UserAvatar do
|
||||
|
||||
FileHelper.expects(:download).raises(SocketError)
|
||||
|
||||
expect { avatar.update_gravatar! }.to_not change { Upload.count }
|
||||
expect do
|
||||
expect { avatar.update_gravatar! }.to raise_error(SocketError)
|
||||
end.to_not change { Upload.count }
|
||||
|
||||
expect(avatar.last_gravatar_download_attempt).to eq(Time.now)
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user