controller
  def process_test(conn, _) do
    Plug.Conn.configure_session(conn, renew: true)
    Logger.debug("Controler Process : #{inspect self()}")
    make_monitor_process()
    # IO.inspect conn
    Process.sleep(10_000)
    text conn, "#{inspect self()} : Done"
  end
  def make_monitor_process do
    target_pid = self()
    spawn(fn ->
      Logger.debug("Monitor Process : #{inspect self()} , target : #{inspect target_pid}")
      Process.flag(:trap_exit, true)
      Process.link(target_pid)
      receive do
        msg -> Logger.debug("Received : #{inspect msg}")
      end
    end)
  end
open your browser and put “localhost:4000/test” on address box and push enter key,
and then refresh your browser before 10 seconds. (just refresh as soon as push enter key)
you’ll see below.
iex(5)> [info] GET /test
[debug] Processing with TestWeb.PageController.process_test/2
  Parameters: %{}
  Pipelines: [:browser, :not_authenticated]
[debug] Controler Process : #PID<0.1335.0>
[debug] Monitor Process : #PID<0.1345.0> , target : #PID<0.1335.0>
*> [debug] Received : {:EXIT, #PID<0.1335.0>, :shutdown}*
[info] GET /test
[debug] Processing with TestWeb.PageController.process_test/2
  Parameters: %{}
  Pipelines: [:browser, :not_authenticated]
[debug] Controler Process : #PID<0.1347.0>
[debug] Monitor Process : #PID<0.1357.0> , target : #PID<0.1347.0>
[info] Sent 200 in 10004ms
I am guessing that cowboy killed previous request process
whenever it receives next request before sending response for first one.
my question is that where I can find cowbow or something else’s source
that affect killing process I mentioned above?
and is there any ways to config that kind of thing like waiting for processing request instead of killing it?
Thanks.




















