aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlambda <pleromagit@rogerbraun.net>2019-01-21 13:03:32 +0000
committerlambda <pleromagit@rogerbraun.net>2019-01-21 13:03:32 +0000
commit8cd853ce0c2d67614dc2e0b07b4cf855a2a381d2 (patch)
tree4442ec2d7b07ebae6c5601d6822959960e47a95d
parent69454c834519a68b80318ad0efecd682a1013cda (diff)
parenta4d3fec8a71241d5c40fa76e33f15fa217154600 (diff)
downloadpleroma-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
-rw-r--r--lib/pleroma/web/activity_pub/activity_pub.ex10
-rw-r--r--test/integration/mastodon_websocket_test.exs3
2 files changed, 6 insertions, 7 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
diff --git a/test/integration/mastodon_websocket_test.exs b/test/integration/mastodon_websocket_test.exs
index 03aabf12c..2e385f5ad 100644
--- a/test/integration/mastodon_websocket_test.exs
+++ b/test/integration/mastodon_websocket_test.exs
@@ -66,13 +66,10 @@ defmodule Pleroma.Integration.MastodonWebsocketTest do
assert json["payload"]
assert {:ok, json} = Jason.decode(json["payload"])
- # Note: we remove the "statuses_count" from this result as it changes in the meantime
-
view_json =
Pleroma.Web.MastodonAPI.StatusView.render("status.json", activity: activity, for: nil)
|> Jason.encode!()
|> Jason.decode!()
- |> put_in(["account", "statuses_count"], 0)
assert json == view_json
end