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