@@ -48,13 +48,15 @@ defmodule Supavisor.Application do
4848 { Supavisor.SignalHandler , [ ] }
4949 )
5050
51- local_proxy_shards_count = Application . fetch_env! ( :supavisor , :local_proxy_shards )
51+ session_shards =
52+ :supavisor
53+ |> Application . fetch_env! ( :session_proxy_ports )
54+ |> build_shards ( :session )
5255
53- local_proxy_shards =
54- for shard <- 0 .. ( local_proxy_shards_count - 1 ) , mode <- [ :session , :transaction ] do
55- { { :pg_proxy_internal , mode , shard } , 0 , % { mode: mode , local: true , shard: shard } ,
56- Supavisor.ClientHandler }
57- end
56+ transaction_shards =
57+ :supavisor
58+ |> Application . fetch_env! ( :transaction_proxy_ports )
59+ |> build_shards ( :transaction )
5860
5961 proxy_ports =
6062 [
@@ -64,7 +66,7 @@ defmodule Supavisor.Application do
6466 % { mode: :session , local: false } , Supavisor.ClientHandler } ,
6567 { :pg_proxy , Application . get_env ( :supavisor , :proxy_port ) , % { mode: :proxy , local: false } ,
6668 Supavisor.ClientHandler }
67- ] ++ local_proxy_shards
69+ ] ++ session_shards ++ transaction_shards
6870
6971 for { key , port , opts , handler } <- proxy_ports do
7072 case :ranch . start_listener (
@@ -159,6 +161,14 @@ defmodule Supavisor.Application do
159161 :ok
160162 end
161163
164+ @ spec build_shards ( [ pos_integer ( ) ] , atom ( ) ) :: term ( )
165+ defp build_shards ( ports , mode ) do
166+ for { port , shard } <- Enum . with_index ( ports ) do
167+ { { :pg_proxy_internal , mode , shard } , port , % { mode: mode , local: true , shard: shard } ,
168+ Supavisor.ClientHandler }
169+ end
170+ end
171+
162172 @ spec short_node_id ( ) :: String . t ( ) | nil
163173 defp short_node_id do
164174 with { :ok , fly_alloc_id } when is_binary ( fly_alloc_id ) <-
0 commit comments