Make your genserver set :$callers key in process dictionary and Ecto sandbox should be able to figure ownership. More info on caller tracking: Task — Elixir v1.18.4
basically, you’ll have something like this:
defmodule MyGenserver do
use GenServer
def start_link(arg) do
callers = Process.get(:"$callers", [])
GenServer.start_link(__MODULE__, {arg, callers})
end
def init({arg, callers}) do
Process.put(:"$callers", [self() | callers])
...
end
end






















