remove prune code related to Tombstones.

This commit is contained in:
faried nawaz 2023-09-24 21:38:52 +05:00
parent bcdd5d9e23
commit 98a25af6b8
No known key found for this signature in database
GPG key ID: EDCFAF5BA3A2F622
4 changed files with 1 additions and 90 deletions

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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