Skip to content

Commit

Permalink
Add riak_core_xcmd_mgr module for starting xcmd
Browse files Browse the repository at this point in the history
  • Loading branch information
nickelization committed Jan 21, 2015
1 parent 70171d6 commit 4010bec
Showing 1 changed file with 50 additions and 0 deletions.
50 changes: 50 additions & 0 deletions src/riak_core_xcmd_mgr.erl
@@ -0,0 +1,50 @@
-module(riak_core_xcmd_mgr).

-behavior(supervisor).

-export([
start_link/0,
init/1
]).

%% Helper macro for declaring children of supervisor
-define(CHILD(I, Type, Args), {I, {I, start_link, Args}, permanent, 5000, Type, [I]}).
-define(CHILD(I, Type), ?CHILD(I, Type, 5000)).

%% ===================================================================
%% API functions
%% ===================================================================

-spec start_link() -> pid().
start_link() ->
{ok, Pid} = supervisor:start_link({local, ?MODULE}, ?MODULE, []),
riak_core_ring_events:add_sup_callback(fun ring_update/1),
{ok, Pid}.

%% ===================================================================
%% Supervisor callbacks
%% ===================================================================

init([]) ->
{ok, Ring} = riak_core_ring_manager:get_my_ring(),
Members = riak_core_ring:all_members(Ring),
Mods = app_helper:get_env(riak_core, broadcast_mods, [xcmd_manager]),
BroadcastArgs = [Members, Mods],

PRoot = application:get_env(riak_core, platform_data_dir, "/tmp"),
Path = filename:join(PRoot, "cluster_meta"),
HashtreeArgs = [Path],
ManagerArgs = [[{data_dir, Path}]],

Children = [
?CHILD(xcmd_manager, worker, ManagerArgs),
?CHILD(xcmd_hashtree, worker, HashtreeArgs),
?CHILD(xcmd_broadcast, worker, BroadcastArgs)
],

{ok, {{one_for_one, 10, 10}, Children}}.

-spec ring_update(riak_core_ring:riak_core_ring()) -> ok.
ring_update(Ring) ->
Nodes = riak_core_ring:all_broadcast_members(Ring),
xcmd_broadcast:membership_update(Nodes).

0 comments on commit 4010bec

Please sign in to comment.