diff --git a/VERSION b/VERSION index be5b4c7b..6f182425 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.1.20 +1.1.21 diff --git a/lib/supavisor/client_handler.ex b/lib/supavisor/client_handler.ex index f0a91183..d2d3977d 100644 --- a/lib/supavisor/client_handler.ex +++ b/lib/supavisor/client_handler.ex @@ -35,6 +35,7 @@ defmodule Supavisor.ClientHandler do def init(ref, trans, opts) do Process.flag(:trap_exit, true) + H.set_max_heap_size(150) {:ok, sock} = :ranch.handshake(ref) :ok = trans.setopts(sock, active: true) diff --git a/lib/supavisor/db_handler.ex b/lib/supavisor/db_handler.ex index 04cdd5c8..eee3e45b 100644 --- a/lib/supavisor/db_handler.ex +++ b/lib/supavisor/db_handler.ex @@ -35,6 +35,8 @@ defmodule Supavisor.DbHandler do @impl true def init(args) do Process.flag(:trap_exit, true) + H.set_max_heap_size(150) + {_, tenant} = args.tenant Logger.metadata(project: tenant, user: args.user, mode: args.mode) diff --git a/lib/supavisor/helpers.ex b/lib/supavisor/helpers.ex index 8cc295c2..d23108ae 100644 --- a/lib/supavisor/helpers.ex +++ b/lib/supavisor/helpers.ex @@ -330,4 +330,17 @@ defmodule Supavisor.Helpers do kind, reason -> {:error, {:badrpc, {kind, reason}}} end end + + @doc """ + Sets the maximum heap size for the current process. The `max_heap_size` parameter is in megabytes. + + ## Parameters + + - `max_heap_size`: The maximum heap size in megabytes. + """ + @spec set_max_heap_size(pos_integer()) :: map() + def set_max_heap_size(max_heap_size) do + max_heap_words = div(max_heap_size * 1024 * 1024, :erlang.system_info(:wordsize)) + Process.flag(:max_heap_size, %{size: max_heap_words}) + end end