diff options
author | Paul J. Davis <paul.joseph.davis@gmail.com> | 2013-04-23 16:55:48 -0500 |
---|---|---|
committer | Paul J. Davis <paul.joseph.davis@gmail.com> | 2013-04-24 13:17:55 -0500 |
commit | 0c4a95fdad8dc9d3d4a46a727d586c02d6f16e52 (patch) | |
tree | 1d0d7684e587c60ab38a177822a8c5cc8c813d5d | |
parent | c296cae588d30081ac920e4fbc7c9fddc90bb1de (diff) | |
download | couchdb-0c4a95fdad8dc9d3d4a46a727d586c02d6f16e52.tar.gz |
Update to use new couch_event application
-rw-r--r-- | src/custodian/src/custodian.app.src | 1 | ||||
-rw-r--r-- | src/custodian/src/custodian_server.erl | 33 |
2 files changed, 19 insertions, 15 deletions
diff --git a/src/custodian/src/custodian.app.src b/src/custodian/src/custodian.app.src index 963172642..ff35a99c7 100644 --- a/src/custodian/src/custodian.app.src +++ b/src/custodian/src/custodian.app.src @@ -9,6 +9,7 @@ kernel, stdlib, config, + couch_event, couch, twig, mem3 diff --git a/src/custodian/src/custodian_server.erl b/src/custodian/src/custodian_server.erl index d50bd8a6b..3b947b782 100644 --- a/src/custodian/src/custodian_server.erl +++ b/src/custodian/src/custodian_server.erl @@ -13,12 +13,12 @@ % exported for callback. -export([ check_shards/0, - update_event_handler/1 + handle_db_event/3 ]). % private records. -record(state, { - update_notifier, + event_listener, shard_checker, rescan=false }). @@ -32,9 +32,9 @@ start_link() -> init(_) -> process_flag(trap_exit, true), net_kernel:monitor_nodes(true), - {ok, UNPid} = start_update_notifier(), + {ok, LisPid} = start_event_listener(), {ok, start_shard_checker(#state{ - update_notifier=UNPid + event_listener=LisPid })}. handle_call(_Msg, _From, State) -> @@ -63,19 +63,19 @@ handle_info({'EXIT', Pid, Reason}, #state{shard_checker=Pid}=State) -> NewState = State#state{shard_checker=undefined}, {noreply, start_shard_checker(NewState)}; -handle_info({'EXIT', Pid, Reason}, #state{update_notifier=Pid}=State) -> +handle_info({'EXIT', Pid, Reason}, #state{event_listener=Pid}=State) -> twig:log(notice, "custodian update notifier died ~p", [Reason]), - {ok, Pid1} = start_update_notifier(), - {noreply, State#state{update_notifier=Pid1}}. + {ok, Pid1} = start_event_listener(), + {noreply, State#state{event_listener=Pid1}}. terminate(_Reason, State) -> - couch_util:shutdown_sync(State#state.update_notifier), + couch_event:stop_listener(State#state.event_listener), couch_util:shutdown_sync(State#state.shard_checker), ok. code_change(_OldVsn, {state, Pid}, _Extra) -> {ok, #state{ - update_notifier=Pid, + event_listener=Pid, shard_checker=undefined, rescan=false }}; @@ -94,13 +94,16 @@ start_shard_checker(#state{shard_checker=Pid}=State) when is_pid(Pid) -> State#state{rescan=true}. -start_update_notifier() -> - couch_db_update_notifier:start_link(fun ?MODULE:update_event_handler/1). +start_event_listener() -> + couch_event:link_listener( + ?MODULE, handle_db_event, nil, [{dbname, <<"dbs">>}] + ). -update_event_handler({updated, <<"dbs">>}) -> - gen_server:cast(?MODULE, refresh); -update_event_handler(_) -> - ok. +handle_db_event(_DbName, updated, _St) -> + gen_server:cast(?MODULE, refresh), + {ok, nil}; +handle_db_event(_DbName, _Event, _St) -> + {ok, nil}. check_shards() -> {Unavailable, Impaired} = custodian:summary(), |