diff options
author | lain <lain@soykaf.club> | 2020-04-22 18:40:53 +0200 |
---|---|---|
committer | lain <lain@soykaf.club> | 2020-04-22 18:40:53 +0200 |
commit | e62173dfc8b739508345b7ab97477ae04fcdb457 (patch) | |
tree | ccdd932fd8e4bf0c74b2bbc2041f3218f6b5c0e7 /lib | |
parent | 1cd38dfffa88384284a8ae0be39f52f25c544936 (diff) | |
download | pleroma-e62173dfc8b739508345b7ab97477ae04fcdb457.tar.gz pleroma-e62173dfc8b739508345b7ab97477ae04fcdb457.zip |
SideEffects: Run in transaction.
This fixes race conditions.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/pleroma/web/activity_pub/side_effects.ex | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/lib/pleroma/web/activity_pub/side_effects.ex b/lib/pleroma/web/activity_pub/side_effects.ex index 6a8f1af96..a0f71fd88 100644 --- a/lib/pleroma/web/activity_pub/side_effects.ex +++ b/lib/pleroma/web/activity_pub/side_effects.ex @@ -15,12 +15,15 @@ defmodule Pleroma.Web.ActivityPub.SideEffects do # - Add like to object # - Set up notification def handle(%{data: %{"type" => "Like"}} = object, meta) do - liked_object = Object.get_by_ap_id(object.data["object"]) - Utils.add_like_to_object(object, liked_object) + Pleroma.Repo.transaction(fn -> + liked_object = Object.get_by_ap_id(object.data["object"]) + Utils.add_like_to_object(object, liked_object) - Notification.create_notifications(object) + Notification.create_notifications(object) - {:ok, object, meta} + {:ok, object, meta} + end) + |> (fn {:ok, res} -> res end).() end # Nothing to do |