mirror of
https://git.pleroma.social/sjw/pleroma.git
synced 2024-12-27 22:45:20 +01:00
Idempotency: Use special cache, keep for 6 hours.
This commit is contained in:
parent
762f6edc29
commit
c464355d1a
@ -23,6 +23,18 @@ defmodule Pleroma.Application do
|
||||
limit: 2500
|
||||
]
|
||||
]),
|
||||
worker(
|
||||
Cachex,
|
||||
[
|
||||
:idempotency_cache,
|
||||
[
|
||||
default_ttl: :timer.seconds(6 * 60 * 60),
|
||||
ttl_interval: :timer.seconds(60),
|
||||
limit: 2500
|
||||
]
|
||||
],
|
||||
id: :cachex_idem
|
||||
),
|
||||
worker(Pleroma.Web.Federator, []),
|
||||
worker(Pleroma.Gopher.Server, []),
|
||||
worker(Pleroma.Stats, [])
|
||||
|
@ -283,13 +283,11 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
|
||||
|
||||
{:ok, activity} =
|
||||
Cachex.get!(
|
||||
:user_cache,
|
||||
"idem:#{idempotency_key}",
|
||||
:idempotency_cache,
|
||||
idempotency_key,
|
||||
fallback: fn _ -> CommonAPI.post(user, params) end
|
||||
)
|
||||
|
||||
Cachex.expire(:user_cache, "idem:#{idempotency_key}", :timer.seconds(5 * 60))
|
||||
|
||||
render(conn, StatusView, "status.json", %{activity: activity, for: user, as: :activity})
|
||||
end
|
||||
|
||||
|
@ -75,9 +75,9 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do
|
||||
"sensitive" => "false"
|
||||
})
|
||||
|
||||
{:ok, ttl} = Cachex.ttl(:user_cache, "idem:#{idempotency_key}")
|
||||
# 5 Minutes
|
||||
assert ttl > :timer.seconds(5 * 60 - 1)
|
||||
{:ok, ttl} = Cachex.ttl(:idempotency_cache, idempotency_key)
|
||||
# Six hours
|
||||
assert ttl > :timer.seconds(6 * 60 * 60 - 1)
|
||||
|
||||
assert %{"content" => "cofe", "id" => id, "spoiler_text" => "2hu", "sensitive" => false} =
|
||||
json_response(conn_one, 200)
|
||||
@ -97,6 +97,19 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do
|
||||
assert %{"id" => second_id} = json_response(conn_two, 200)
|
||||
|
||||
assert id == second_id
|
||||
|
||||
conn_three =
|
||||
conn
|
||||
|> assign(:user, user)
|
||||
|> post("/api/v1/statuses", %{
|
||||
"status" => "cofe",
|
||||
"spoiler_text" => "2hu",
|
||||
"sensitive" => "false"
|
||||
})
|
||||
|
||||
assert %{"id" => third_id} = json_response(conn_three, 200)
|
||||
|
||||
refute id == third_id
|
||||
end
|
||||
|
||||
test "posting a sensitive status", %{conn: conn} do
|
||||
|
Loading…
Reference in New Issue
Block a user