logo

pleroma

My custom branche(s) on git.pleroma.social/pleroma/pleroma git clone https://anongit.hacktivis.me/git/pleroma.git/
commit: f38e9228ef01ee575224faef72c820525dd73c22
parent 5cd8c23634ea78951e72bbb522e86769c29817f5
Author: feld <feld@feld.me>
Date:   Sat,  7 Jun 2025 19:39:57 +0000

Merge branch 'tusooa/assign-app-user-oom' into 'develop'

Fix AssignAppUser migration OOM

Closes #3358

See merge request pleroma/pleroma!4326

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