diff options
author | Tim Watson <tim@rabbitmq.com> | 2013-10-09 16:45:39 +0100 |
---|---|---|
committer | Tim Watson <tim@rabbitmq.com> | 2013-10-09 16:45:39 +0100 |
commit | 43eaf1fd45f55a7cfaf9618bc3622982d03109d5 (patch) | |
tree | 7fec2b23453df09f9ffa14ab4a6d13e49a23213a /src/rabbit_connection_helper_sup.erl | |
parent | 83fa3336f9e97549907fabb2a59a1ef29ae3cf46 (diff) | |
download | rabbitmq-server-43eaf1fd45f55a7cfaf9618bc3622982d03109d5.tar.gz |
Defer starting a queue collector until we've received tune-ok
By waiting for the connection to be fully opened, we reduce resource
usage for abandoned connections and DoS vectors. The collector is
started as a child of the connection_helper_sup, thus avoiding a
potential deadlock with the parent supervisor during shutdown.
Diffstat (limited to 'src/rabbit_connection_helper_sup.erl')
-rw-r--r-- | src/rabbit_connection_helper_sup.erl | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/rabbit_connection_helper_sup.erl b/src/rabbit_connection_helper_sup.erl index 580aa65f..8f6c7698 100644 --- a/src/rabbit_connection_helper_sup.erl +++ b/src/rabbit_connection_helper_sup.erl @@ -19,12 +19,16 @@ -behaviour(supervisor2). -export([start_link/0]). +-export([start_queue_collector/1]). -export([init/1]). +-include("rabbit.hrl"). + %%---------------------------------------------------------------------------- -ifdef(use_specs). -spec(start_link/0 :: () -> rabbit_types:ok_pid_or_error()). +-spec(start_queue_collector/1 :: (pid()) -> rabbit_types:ok_pid_or_error()). -endif. %%---------------------------------------------------------------------------- @@ -32,6 +36,12 @@ start_link() -> supervisor2:start_link(?MODULE, []). +start_queue_collector(SupPid) -> + supervisor2:start_child( + SupPid, + {collector, {rabbit_queue_collector, start_link, []}, + intrinsic, ?MAX_WAIT, worker, [rabbit_queue_collector]}). + %%-------------------------------------------------------------------------- init([]) -> |