[#530] Prevents user `info` from being overwritten because of race conditions

and non-partial update of embed (in WebFinger.ensure_keys_present and other places).
This commit is contained in:
Ivan Tashkinov 2019-01-21 14:16:51 +03:00
parent 52006f8f8a
commit aa480f4a8b
1 changed files with 6 additions and 4 deletions

View File

@ -140,8 +140,9 @@ def create(%{to: to, actor: actor, context: context, object: object} = params) d
additional
),
{:ok, activity} <- insert(create_data, local),
:ok <- maybe_federate(activity),
{:ok, _actor} <- User.increase_note_count(actor) do
# Changing note count prior to federation in order not to reload `actor` (potentially updated by federator)
{:ok, _actor} <- User.increase_note_count(actor),
:ok <- maybe_federate(activity) do
{:ok, activity}
end
end
@ -288,8 +289,9 @@ def delete(%Object{data: %{"id" => id, "actor" => actor}} = object, local \\ tru
with {:ok, _} <- Object.delete(object),
{:ok, activity} <- insert(data, local),
:ok <- maybe_federate(activity),
{:ok, _actor} <- User.decrease_note_count(user) do
# Changing note count prior to federation in order not to reload `actor` (potentially updated by federator)
{:ok, _actor} <- User.decrease_note_count(user),
:ok <- maybe_federate(activity) do
{:ok, activity}
end
end