logo

pleroma

My custom branche(s) on git.pleroma.social/pleroma/pleroma git clone https://anongit.hacktivis.me/git/pleroma.git/
commit: 7b69e525643da749afbe4f6fa0bd59cbd6dcc923
parent 6f48ade41736ffd5ac02eee445c35516cbbbe907
Author: tusooa <tusooa@kazv.moe>
Date:   Sun, 23 Feb 2025 21:12:08 -0500

Fix AssignAppUser migration OOM

Diffstat:

Achangelog.d/assign-app-user-oom.fix1+
Mpriv/repo/migrations/20240904142434_assign_app_user.exs18+++++++++++-------
2 files changed, 12 insertions(+), 7 deletions(-)

diff --git a/changelog.d/assign-app-user-oom.fix b/changelog.d/assign-app-user-oom.fix @@ -0,0 +1 @@ +Fix AssignAppUser migration OOM diff --git a/priv/repo/migrations/20240904142434_assign_app_user.exs b/priv/repo/migrations/20240904142434_assign_app_user.exs @@ -1,20 +1,24 @@ defmodule Pleroma.Repo.Migrations.AssignAppUser do use Ecto.Migration + import Ecto.Query + alias Pleroma.Repo alias Pleroma.Web.OAuth.App alias Pleroma.Web.OAuth.Token def up do - Repo.all(Token) - |> Enum.group_by(fn x -> Map.get(x, :app_id) end) - |> Enum.each(fn {_app_id, tokens} -> - token = - Enum.filter(tokens, fn x -> not is_nil(x.user_id) end) - |> List.first() - + Token + |> where([t], not is_nil(t.user_id)) + |> group_by([t], t.app_id) + |> select([t], %{app_id: t.app_id, id: min(t.id)}) + |> order_by(asc: :app_id) + |> Repo.stream() + |> Stream.each(fn %{id: id} -> + token = Token.Query.get_by_id(id) |> Repo.one() App.maybe_update_owner(token) end) + |> Stream.run() end def down, do: :ok