diff options
author | lambda <pleromagit@rogerbraun.net> | 2019-01-21 13:03:32 +0000 |
---|---|---|
committer | lambda <pleromagit@rogerbraun.net> | 2019-01-21 13:03:32 +0000 |
commit | 8cd853ce0c2d67614dc2e0b07b4cf855a2a381d2 (patch) | |
tree | 4442ec2d7b07ebae6c5601d6822959960e47a95d /lib | |
parent | 69454c834519a68b80318ad0efecd682a1013cda (diff) | |
parent | a4d3fec8a71241d5c40fa76e33f15fa217154600 (diff) | |
download | pleroma-8cd853ce0c2d67614dc2e0b07b4cf855a2a381d2.tar.gz |
Merge branch '530_federator_user_info_overwrite_fix' into 'develop'
[#530] Prevents user `info` from being overwritten because of race conditions
Closes #530
See merge request pleroma/pleroma!691
Diffstat (limited to 'lib')
-rw-r--r-- | lib/pleroma/web/activity_pub/activity_pub.ex | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex index e5f265817..82fffd324 100644 --- a/lib/pleroma/web/activity_pub/activity_pub.ex +++ b/lib/pleroma/web/activity_pub/activity_pub.ex @@ -140,8 +140,9 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do additional ), {:ok, activity} <- insert(create_data, local), - :ok <- maybe_federate(activity), - {:ok, _actor} <- User.increase_note_count(actor) do + # Changing note count prior to enqueuing federation task in order to avoid race conditions on updating user.info + {:ok, _actor} <- User.increase_note_count(actor), + :ok <- maybe_federate(activity) do {:ok, activity} end end @@ -288,8 +289,9 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do 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 enqueuing federation task in order to avoid race conditions on updating user.info + {:ok, _actor} <- User.decrease_note_count(user), + :ok <- maybe_federate(activity) do {:ok, activity} end end |