summaryrefslogtreecommitdiff
path: root/merge/src/merge_dist_sup.erl
diff options
context:
space:
mode:
authorLinus Nordberg <linus@nordu.net>2017-02-08 11:55:27 +0100
committerLinus Nordberg <linus@nordu.net>2017-02-08 11:55:27 +0100
commit0e635b850809c843295b822551ef902ffeb19142 (patch)
treef2c2051d77dbf7549f4324471042de37ee5a77fb /merge/src/merge_dist_sup.erl
parentc5506779dac2d13ca407ae26f97ba6e6e85a6ad7 (diff)
Make merge dist workers one_for_one.
Look like dist backup, in preparation for reloadable config wrt frontend nodes. Also pass node names as well as addresses.
Diffstat (limited to 'merge/src/merge_dist_sup.erl')
-rw-r--r--merge/src/merge_dist_sup.erl30
1 files changed, 12 insertions, 18 deletions
diff --git a/merge/src/merge_dist_sup.erl b/merge/src/merge_dist_sup.erl
index 050ddc5..06bc384 100644
--- a/merge/src/merge_dist_sup.erl
+++ b/merge/src/merge_dist_sup.erl
@@ -7,23 +7,17 @@
-export([start_link/1, init/1]).
start_link([]) ->
- {ok, Nodes} = application:get_env(plop, frontend_nodes),
- lager:info("starting merge dist for frontend nodes: ~p", [Nodes]),
- {ok, Pid} = supervisor:start_link({local, ?MODULE}, ?MODULE, []),
- lists:map(fun(Node) ->
- lager:debug("starting dist worker: ~p", [Node]),
- {ok, Child} =
- supervisor:start_child(?MODULE, [Node]),
- Child
- end, Nodes),
- {ok, Pid}.
+ supervisor:start_link({local, ?MODULE}, ?MODULE, []).
init(_Args) ->
- {ok,
- {{simple_one_for_one, 3, 10},
- [
- {ignored,
- {merge_dist, start_link, []},
- permanent, 10000, worker,
- [merge_dist]}
- ]}}.
+ {ok, {{one_for_one, 3, 10}, children()}}.
+
+children() ->
+ {ok, Nodes} = plopconfig:get_env(frontend_nodes),
+ {Names, _Addrs} = lists:unzip(Nodes),
+ lager:info("Starting merge dist for frontend nodes: ~p", [Names]),
+ [child_spec(Node) || Node <- Nodes].
+
+child_spec({Name, Address}) ->
+ {Name, {merge_dist, start_link, [[Name, Address]]},
+ permanent, 10000, worker, [merge_dist]}.