diff options
author | Eugen Rochko <eugen@zeonfederated.com> | 2022-11-04 13:21:06 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-11-04 13:21:06 +0100 |
commit | 5f9e47be34fcf42ff7fcd5668c7555d4a38e289a (patch) | |
tree | 5f0f22a0297e1235b8189d4cbd1a8568089e6f2d /app/services | |
parent | b8f6f039563044764336d4c62d87b1d5442d7c8b (diff) |
Add caching for payload serialization during fan-out (#19642)
Diffstat (limited to 'app/services')
-rw-r--r-- | app/services/fan_out_on_write_service.rb | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/app/services/fan_out_on_write_service.rb b/app/services/fan_out_on_write_service.rb index ce20a146e..2554756a5 100644 --- a/app/services/fan_out_on_write_service.rb +++ b/app/services/fan_out_on_write_service.rb @@ -14,6 +14,7 @@ class FanOutOnWriteService < BaseService @options = options check_race_condition! + warm_payload_cache! fan_out_to_local_recipients! fan_out_to_public_recipients! if broadcastable? @@ -135,13 +136,21 @@ class FanOutOnWriteService < BaseService AccountConversation.add_status(@account, @status) unless update? end + def warm_payload_cache! + Rails.cache.write("fan-out/#{@status.id}", rendered_status) + end + def anonymous_payload @anonymous_payload ||= Oj.dump( event: update? ? :'status.update' : :update, - payload: InlineRenderer.render(@status, nil, :status) + payload: rendered_status ) end + def rendered_status + @rendered_status ||= InlineRenderer.render(@status, nil, :status) + end + def update? @options[:update] end |