diff options
author | Eugen Rochko <eugen@zeonfederated.com> | 2018-08-18 03:03:23 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-08-18 03:03:23 +0200 |
commit | d010816ba876bf4f749749e9d7432a843e8a1ff9 (patch) | |
tree | 08e9b4c45c1de2bad5455164cd008b1597db4665 /app/models | |
parent | 78fa926ed560e6a9738144bec7e152fa42104139 (diff) |
Fix error when trying to update counters for statuses that are gone (#8251)
Diffstat (limited to 'app/models')
-rw-r--r-- | app/models/favourite.rb | 4 | ||||
-rw-r--r-- | app/models/status.rb | 10 |
2 files changed, 8 insertions, 6 deletions
diff --git a/app/models/favourite.rb b/app/models/favourite.rb index ce7a6a336..17f8c9fa6 100644 --- a/app/models/favourite.rb +++ b/app/models/favourite.rb @@ -32,11 +32,11 @@ class Favourite < ApplicationRecord private def increment_cache_counters - status.increment_count!(:favourites_count) + status&.increment_count!(:favourites_count) end def decrement_cache_counters return if association(:status).loaded? && (status.marked_for_destruction? || status.marked_for_mass_destruction?) - status.decrement_count!(:favourites_count) + status&.decrement_count!(:favourites_count) end end diff --git a/app/models/status.rb b/app/models/status.rb index 2eed33659..533d12354 100644 --- a/app/models/status.rb +++ b/app/models/status.rb @@ -396,6 +396,8 @@ class Status < ApplicationRecord private def update_status_stat!(attrs) + return if marked_for_destruction? || destroyed? + record = status_stat || build_status_stat record.update(attrs) end @@ -456,8 +458,8 @@ class Status < ApplicationRecord Account.where(id: account_id).update_all('statuses_count = COALESCE(statuses_count, 0) + 1') end - reblog.increment_count!(:reblogs_count) if reblog? - thread.increment_count!(:replies_count) if in_reply_to_id.present? && (public_visibility? || unlisted_visibility?) + reblog&.increment_count!(:reblogs_count) if reblog? + thread&.increment_count!(:replies_count) if in_reply_to_id.present? && (public_visibility? || unlisted_visibility?) end def decrement_counter_caches @@ -469,7 +471,7 @@ class Status < ApplicationRecord Account.where(id: account_id).update_all('statuses_count = GREATEST(COALESCE(statuses_count, 0) - 1, 0)') end - reblog.decrement_count!(:reblogs_count) if reblog? - thread.decrement_count!(:replies_count) if in_reply_to_id.present? && (public_visibility? || unlisted_visibility?) + reblog&.decrement_count!(:reblogs_count) if reblog? + thread&.decrement_count!(:replies_count) if in_reply_to_id.present? && (public_visibility? || unlisted_visibility?) end end |