X-Git-Url: https://git.squeep.com/?a=blobdiff_plain;f=lib%2Fpleroma%2Fuser.ex;h=55c164272d6baab662982956afde88970e4b77ce;hb=32d1e048178a94017c9d8cca79b28272fa6da9f4;hp=56e599ecc9494050a8db2cabd1531f4fc4049e1d;hpb=8b4d1a0b2917ac5146e6a37e062cda5ae968ea28;p=akkoma diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index 56e599ecc..55c164272 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -749,9 +749,18 @@ defmodule Pleroma.User do Cachex.del(:user_cache, "nickname:#{user.nickname}") end + @spec get_cached_by_ap_id(String.t()) :: User.t() | nil def get_cached_by_ap_id(ap_id) do key = "ap_id:#{ap_id}" - Cachex.fetch!(:user_cache, key, fn _ -> get_by_ap_id(ap_id) end) + + with {:ok, nil} <- Cachex.get(:user_cache, key), + user when not is_nil(user) <- get_by_ap_id(ap_id), + {:ok, true} <- Cachex.put(:user_cache, key, user) do + user + else + {:ok, user} -> user + nil -> nil + end end def get_cached_by_id(id) do