diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/pleroma/application.ex | 8 | ||||
-rw-r--r-- | lib/pleroma/object.ex | 20 | ||||
-rw-r--r-- | lib/pleroma/user.ex | 12 | ||||
-rw-r--r-- | lib/pleroma/web/activity_pub/transmogrifier.ex | 14 | ||||
-rw-r--r-- | lib/pleroma/web/mastodon_api/mastodon_api_controller.ex | 6 |
5 files changed, 28 insertions, 32 deletions
diff --git a/lib/pleroma/application.ex b/lib/pleroma/application.ex index e1e3bcd63..a89728471 100644 --- a/lib/pleroma/application.ex +++ b/lib/pleroma/application.ex @@ -5,6 +5,7 @@ defmodule Pleroma.Application do # for more information on OTP Applications def start(_type, _args) do import Supervisor.Spec + import Cachex.Spec # Define workers and child supervisors to be supervised children = @@ -28,8 +29,11 @@ defmodule Pleroma.Application do [ :idempotency_cache, [ - default_ttl: :timer.seconds(6 * 60 * 60), - ttl_interval: :timer.seconds(60), + expiration: + expiration( + default: :timer.seconds(6 * 60 * 60), + interval: :timer.seconds(60) + ), limit: 2500 ] ], diff --git a/lib/pleroma/object.ex b/lib/pleroma/object.ex index 558e151b0..ff2af4a6f 100644 --- a/lib/pleroma/object.ex +++ b/lib/pleroma/object.ex @@ -33,19 +33,15 @@ defmodule Pleroma.Object do else key = "object:#{ap_id}" - Cachex.get!( - :user_cache, - key, - fallback: fn _ -> - object = get_by_ap_id(ap_id) - - if object do - {:commit, object} - else - {:ignore, object} - end + Cachex.fetch!(:user_cache, key, fn _ -> + object = get_by_ap_id(ap_id) + + if object do + {:commit, object} + else + {:ignore, object} end - ) + end) end end diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index 6a8129ac8..690cc7cf3 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -223,9 +223,9 @@ defmodule Pleroma.User do def update_and_set_cache(changeset) do with {:ok, user} <- Repo.update(changeset) do - Cachex.set(:user_cache, "ap_id:#{user.ap_id}", user) - Cachex.set(:user_cache, "nickname:#{user.nickname}", user) - Cachex.set(:user_cache, "user_info:#{user.id}", user_info(user)) + Cachex.put(:user_cache, "ap_id:#{user.ap_id}", user) + Cachex.put(:user_cache, "nickname:#{user.nickname}", user) + Cachex.put(:user_cache, "user_info:#{user.id}", user_info(user)) {:ok, user} else e -> e @@ -239,12 +239,12 @@ defmodule Pleroma.User do def get_cached_by_ap_id(ap_id) do key = "ap_id:#{ap_id}" - Cachex.get!(:user_cache, key, fallback: fn _ -> get_by_ap_id(ap_id) end) + Cachex.fetch!(:user_cache, key, fn _ -> get_by_ap_id(ap_id) end) end def get_cached_by_nickname(nickname) do key = "nickname:#{nickname}" - Cachex.get!(:user_cache, key, fallback: fn _ -> get_or_fetch_by_nickname(nickname) end) + Cachex.fetch!(:user_cache, key, fn _ -> get_or_fetch_by_nickname(nickname) end) end def get_by_nickname(nickname) do @@ -260,7 +260,7 @@ defmodule Pleroma.User do def get_cached_user_info(user) do key = "user_info:#{user.id}" - Cachex.get!(:user_cache, key, fallback: fn _ -> user_info(user) end) + Cachex.fetch!(:user_cache, key, fn _ -> user_info(user) end) end def fetch_by_nickname(nickname) do diff --git a/lib/pleroma/web/activity_pub/transmogrifier.ex b/lib/pleroma/web/activity_pub/transmogrifier.ex index a31452a63..7d6fd8632 100644 --- a/lib/pleroma/web/activity_pub/transmogrifier.ex +++ b/lib/pleroma/web/activity_pub/transmogrifier.ex @@ -229,7 +229,7 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do "object" => %{"type" => "Announce", "object" => object_id}, "actor" => actor, "id" => id - } = data + } = _data ) do with %User{} = actor <- User.get_or_fetch_by_ap_id(actor), {:ok, object} <- @@ -237,7 +237,7 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do {:ok, activity, _, _} <- ActivityPub.unannounce(actor, object, id, false) do {:ok, activity} else - e -> :error + _e -> :error end end @@ -247,7 +247,7 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do "object" => %{"type" => "Like", "object" => object_id}, "actor" => actor, "id" => id - } = data + } = _data ) do with %User{} = actor <- User.get_or_fetch_by_ap_id(actor), {:ok, object} <- @@ -255,7 +255,7 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do {:ok, activity, _, _} <- ActivityPub.unlike(actor, object, id, false) do {:ok, activity} else - e -> :error + _e -> :error end end @@ -516,10 +516,10 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do def maybe_fix_user_url(data) do if is_map(data["url"]) do - data = Map.put(data, "url", data["url"]["href"]) + Map.put(data, "url", data["url"]["href"]) + else + data end - - data end def maybe_fix_user_object(data) do diff --git a/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex b/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex index 85f9c5b7b..e6365620e 100644 --- a/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex +++ b/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex @@ -275,11 +275,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do end {:ok, activity} = - Cachex.get!( - :idempotency_cache, - idempotency_key, - fallback: fn _ -> CommonAPI.post(user, params) end - ) + Cachex.fetch!(:idempotency_cache, idempotency_key, fn _ -> CommonAPI.post(user, params) end) render(conn, StatusView, "status.json", %{activity: activity, for: user, as: :activity}) end |