From bee8b64fa79b74a8fa9a862956d80018eebc2966 Mon Sep 17 00:00:00 2001 From: Lain Soykaf Date: Fri, 14 Mar 2025 19:41:46 +0400 Subject: [PATCH 1/3] Migrations: Add activities_actor_type index --- changelog.d/activity_type_index.change | 1 + .../20250314153704_add_activities_actor_type_index.exs | 7 +++++++ 2 files changed, 8 insertions(+) create mode 100644 changelog.d/activity_type_index.change create mode 100644 priv/repo/migrations/20250314153704_add_activities_actor_type_index.exs diff --git a/changelog.d/activity_type_index.change b/changelog.d/activity_type_index.change new file mode 100644 index 000000000..ea2d7adbe --- /dev/null +++ b/changelog.d/activity_type_index.change @@ -0,0 +1 @@ +Add new activity actor/type index. Greatly speeds up retrieval of rare types (like "Listen") diff --git a/priv/repo/migrations/20250314153704_add_activities_actor_type_index.exs b/priv/repo/migrations/20250314153704_add_activities_actor_type_index.exs new file mode 100644 index 000000000..3713beea1 --- /dev/null +++ b/priv/repo/migrations/20250314153704_add_activities_actor_type_index.exs @@ -0,0 +1,7 @@ +defmodule Pleroma.Repo.Migrations.AddActivitiesActorTypeIndex do + use Ecto.Migration + + def change do + create(index(:activities, ["actor", "(data ->> 'type'::text)", "id DESC NULLS LAST"])) + end +end From ad79912a0723f4a3e428c125a9c2946831b2cfa8 Mon Sep 17 00:00:00 2001 From: Lain Soykaf Date: Fri, 14 Mar 2025 19:53:06 +0400 Subject: [PATCH 2/3] Create the index concurrently --- .../20250314153704_add_activities_actor_type_index.exs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/priv/repo/migrations/20250314153704_add_activities_actor_type_index.exs b/priv/repo/migrations/20250314153704_add_activities_actor_type_index.exs index 3713beea1..a0fac28a8 100644 --- a/priv/repo/migrations/20250314153704_add_activities_actor_type_index.exs +++ b/priv/repo/migrations/20250314153704_add_activities_actor_type_index.exs @@ -1,7 +1,14 @@ defmodule Pleroma.Repo.Migrations.AddActivitiesActorTypeIndex do use Ecto.Migration + @disable_ddl_transaction true def change do - create(index(:activities, ["actor", "(data ->> 'type'::text)", "id DESC NULLS LAST"])) + create( + index( + :activities, + ["actor", "(data ->> 'type'::text)", "id DESC NULLS LAST"], + concurrently: true + ) + ) end end From 016df5093dd3296b6bdf60cf1c25cd76f8190392 Mon Sep 17 00:00:00 2001 From: Lain Soykaf Date: Sun, 16 Mar 2025 12:23:22 +0400 Subject: [PATCH 3/3] Config: Use advisory lock --- config/config.exs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/config.exs b/config/config.exs index 50672cfc8..a231c5ba0 100644 --- a/config/config.exs +++ b/config/config.exs @@ -48,7 +48,7 @@ config :pleroma, ecto_repos: [Pleroma.Repo] config :pleroma, Pleroma.Repo, telemetry_event: [Pleroma.Repo.Instrumenter], - migration_lock: nil + migration_lock: :pg_advisory_lock config :pleroma, Pleroma.Captcha, enabled: true,