mirror of
https://git.pleroma.social/pleroma/pleroma.git
synced 2024-06-10 09:19:34 +00:00
remove prune code related to Tombstones.
This commit is contained in:
parent
bcdd5d9e23
commit
98a25af6b8
|
@ -162,7 +162,7 @@ See [PostgreSQL documentation](https://www.postgresql.org/docs/current/textsearc
|
|||
|
||||
## Pruning old activities
|
||||
|
||||
Over time, transient `Delete` activities and `Tombstone` objects
|
||||
Over time, transient `Delete`, `Undo`, and `Remove` activities
|
||||
can accumulate in your database, inflating its size. This is not ideal.
|
||||
There is a periodic task to prune these transient objects,
|
||||
but on first run this may take a while on older instances to catch up
|
||||
|
|
|
@ -1,33 +0,0 @@
|
|||
defmodule Pleroma.Object.Pruner do
|
||||
@moduledoc """
|
||||
Prunes objects from the database.
|
||||
"""
|
||||
|
||||
alias Pleroma.Object
|
||||
alias Pleroma.Delivery
|
||||
alias Pleroma.Repo
|
||||
import Ecto.Query
|
||||
|
||||
def prune_tombstoned_deliveries do
|
||||
from(d in Delivery)
|
||||
|> join(:inner, [d], o in Object, on: d.object_id == o.id)
|
||||
|> where([d, o], fragment("?->>'type' = ?", o.data, "Tombstone"))
|
||||
|> Repo.delete_all(timeout: :infinity)
|
||||
end
|
||||
|
||||
def prune_tombstones do
|
||||
before_time = cutoff()
|
||||
|
||||
from(o in Object,
|
||||
where: fragment("?->>'type' = ?", o.data, "Tombstone") and o.inserted_at < ^before_time
|
||||
)
|
||||
|> Repo.delete_all(timeout: :infinity, on_delete: :delete_all)
|
||||
end
|
||||
|
||||
defp cutoff do
|
||||
deadline = Pleroma.Config.get([:instance, :remote_post_retention_days])
|
||||
|
||||
NaiveDateTime.utc_now()
|
||||
|> NaiveDateTime.add(-(deadline * 86_400))
|
||||
end
|
||||
end
|
|
@ -6,7 +6,6 @@ defmodule Pleroma.Workers.Cron.PruneDatabaseWorker do
|
|||
use Oban.Worker, queue: "prune_database"
|
||||
|
||||
alias Pleroma.Activity.Pruner, as: ActivityPruner
|
||||
alias Pleroma.Object.Pruner, as: ObjectPruner
|
||||
|
||||
@impl Oban.Worker
|
||||
def perform(_job) do
|
||||
|
@ -21,12 +20,6 @@ defmodule Pleroma.Workers.Cron.PruneDatabaseWorker do
|
|||
Logger.info("Pruning old removes")
|
||||
ActivityPruner.prune_removes()
|
||||
|
||||
Logger.info("Pruning old tombstone delivery entries")
|
||||
ObjectPruner.prune_tombstoned_deliveries()
|
||||
|
||||
Logger.info("Pruning old tombstones")
|
||||
ObjectPruner.prune_tombstones()
|
||||
|
||||
:ok
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,49 +0,0 @@
|
|||
defmodule Pleroma.Object.PrunerTest do
|
||||
use Pleroma.DataCase, async: true
|
||||
|
||||
alias Pleroma.Delivery
|
||||
alias Pleroma.Object
|
||||
alias Pleroma.Object.Pruner
|
||||
|
||||
import Pleroma.Factory
|
||||
|
||||
describe "prune_deletes" do
|
||||
test "it prunes old delete objects" do
|
||||
deadline = Pleroma.Config.get([:instance, :remote_post_retention_days]) + 1
|
||||
|
||||
date =
|
||||
Timex.now()
|
||||
|> Timex.shift(days: -deadline)
|
||||
|> Timex.to_naive_datetime()
|
||||
|> NaiveDateTime.truncate(:second)
|
||||
|
||||
new_tombstone = insert(:tombstone)
|
||||
|
||||
old_tombstone =
|
||||
insert(:tombstone,
|
||||
inserted_at: date
|
||||
)
|
||||
|
||||
Pruner.prune_tombstones()
|
||||
assert Object.get_by_id(new_tombstone.id)
|
||||
refute Object.get_by_id(old_tombstone.id)
|
||||
end
|
||||
end
|
||||
|
||||
describe "prune_tombstoned_deliveries" do
|
||||
test "it prunes old tombstone deliveries" do
|
||||
user = insert(:user)
|
||||
|
||||
tombstone = insert(:tombstone)
|
||||
tombstoned = insert(:delivery, object: tombstone, user: user)
|
||||
|
||||
note = insert(:note)
|
||||
not_tombstoned = insert(:delivery, object: note, user: user)
|
||||
|
||||
Pruner.prune_tombstoned_deliveries()
|
||||
|
||||
refute Repo.get(Delivery, tombstoned.id)
|
||||
assert Repo.get(Delivery, not_tombstoned.id)
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Reference in a new issue