Merge branch 'akkoma/delete-improvements' into 'develop'
Alter priority of Delete activities to be lowest See merge request pleroma/pleroma!3782
This commit is contained in:
commit
0e1356ef9c
4 changed files with 49 additions and 4 deletions
|
@ -17,6 +17,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
||||||
- **Breaking**: `/api/v1/pleroma/backups` endpoints now requires `read:backups` scope instead of `read:accounts`
|
- **Breaking**: `/api/v1/pleroma/backups` endpoints now requires `read:backups` scope instead of `read:accounts`
|
||||||
- Updated the recommended pleroma.vcl configuration for Varnish to target Varnish 7.0+
|
- Updated the recommended pleroma.vcl configuration for Varnish to target Varnish 7.0+
|
||||||
- Set timeout values for Oban queues. The default is infinity and some operations may not time out on their own.
|
- Set timeout values for Oban queues. The default is infinity and some operations may not time out on their own.
|
||||||
|
- Delete activities are federated at lowest priority
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
- `activeMonth` and `activeHalfyear` fields in NodeInfo usage.users object
|
- `activeMonth` and `activeHalfyear` fields in NodeInfo usage.users object
|
||||||
|
@ -55,6 +56,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
||||||
- Fixed slow timelines when there are a lot of deactivated users
|
- Fixed slow timelines when there are a lot of deactivated users
|
||||||
- Fixed account deletion API
|
- Fixed account deletion API
|
||||||
- Fixed lowercase HTTP HEAD method in the Media Proxy Preview code
|
- Fixed lowercase HTTP HEAD method in the Media Proxy Preview code
|
||||||
|
- Removed useless notification call on Delete activities
|
||||||
|
|
||||||
### Removed
|
### Removed
|
||||||
- Quack, the logging backend that pushes to Slack channels
|
- Quack, the logging backend that pushes to Slack channels
|
||||||
|
|
|
@ -282,7 +282,6 @@ defmodule Pleroma.Web.ActivityPub.SideEffects do
|
||||||
# Tasks this handles:
|
# Tasks this handles:
|
||||||
# - Delete and unpins the create activity
|
# - Delete and unpins the create activity
|
||||||
# - Replace object with Tombstone
|
# - Replace object with Tombstone
|
||||||
# - Set up notification
|
|
||||||
# - Reduce the user note count
|
# - Reduce the user note count
|
||||||
# - Reduce the reply count
|
# - Reduce the reply count
|
||||||
# - Stream out the activity
|
# - Stream out the activity
|
||||||
|
@ -324,7 +323,6 @@ defmodule Pleroma.Web.ActivityPub.SideEffects do
|
||||||
end
|
end
|
||||||
|
|
||||||
if result == :ok do
|
if result == :ok do
|
||||||
Notification.create_notifications(object)
|
|
||||||
{:ok, object, meta}
|
{:ok, object, meta}
|
||||||
else
|
else
|
||||||
{:error, result}
|
{:error, result}
|
||||||
|
|
|
@ -47,10 +47,15 @@ defmodule Pleroma.Web.Federator do
|
||||||
end
|
end
|
||||||
|
|
||||||
@impl true
|
@impl true
|
||||||
def publish(activity) do
|
def publish(%Pleroma.Activity{data: %{"type" => type}} = activity) do
|
||||||
PublisherWorker.enqueue("publish", %{"activity_id" => activity.id})
|
PublisherWorker.enqueue("publish", %{"activity_id" => activity.id},
|
||||||
|
priority: publish_priority(type)
|
||||||
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
defp publish_priority("Delete"), do: 3
|
||||||
|
defp publish_priority(_), do: 0
|
||||||
|
|
||||||
# Job Worker Callbacks
|
# Job Worker Callbacks
|
||||||
|
|
||||||
@spec perform(atom(), module(), any()) :: {:ok, any()} | {:error, any()}
|
@spec perform(atom(), module(), any()) :: {:ok, any()} | {:error, any()}
|
||||||
|
|
40
test/pleroma/workers/publisher_worker_test.exs
Normal file
40
test/pleroma/workers/publisher_worker_test.exs
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
# Pleroma: A lightweight social networking server
|
||||||
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
||||||
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
|
defmodule Pleroma.Workers.PublisherWorkerTest do
|
||||||
|
use Pleroma.DataCase, async: true
|
||||||
|
use Oban.Testing, repo: Pleroma.Repo
|
||||||
|
|
||||||
|
import Pleroma.Factory
|
||||||
|
|
||||||
|
alias Pleroma.Object
|
||||||
|
alias Pleroma.Web.ActivityPub.ActivityPub
|
||||||
|
alias Pleroma.Web.ActivityPub.Builder
|
||||||
|
alias Pleroma.Web.CommonAPI
|
||||||
|
alias Pleroma.Web.Federator
|
||||||
|
|
||||||
|
describe "Oban job priority:" do
|
||||||
|
setup do
|
||||||
|
user = insert(:user)
|
||||||
|
|
||||||
|
{:ok, post} = CommonAPI.post(user, %{status: "Regrettable post"})
|
||||||
|
object = Object.normalize(post, fetch: false)
|
||||||
|
{:ok, delete_data, _meta} = Builder.delete(user, object.data["id"])
|
||||||
|
{:ok, delete, _meta} = ActivityPub.persist(delete_data, local: true)
|
||||||
|
|
||||||
|
%{
|
||||||
|
post: post,
|
||||||
|
delete: delete
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
test "Deletions are lower priority", %{delete: delete} do
|
||||||
|
assert {:ok, %Oban.Job{priority: 3}} = Federator.publish(delete)
|
||||||
|
end
|
||||||
|
|
||||||
|
test "Creates are normal priority", %{post: post} do
|
||||||
|
assert {:ok, %Oban.Job{priority: 0}} = Federator.publish(post)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in a new issue