From a170ebc9a5696806dad51f1b7b6746fcbb7f49c7 Mon Sep 17 00:00:00 2001 From: Mark Allen Date: Tue, 29 Mar 2016 10:48:19 -0500 Subject: [PATCH] Send the sink name with reboot message Previously, was always hardcoded to the default sink name. --- src/lager_handler_watcher.erl | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/lager_handler_watcher.erl b/src/lager_handler_watcher.erl index 3d13cd3..df92584 100644 --- a/src/lager_handler_watcher.erl +++ b/src/lager_handler_watcher.erl @@ -64,10 +64,14 @@ handle_info({gen_event_EXIT, Module, shutdown}, #state{module=Module} = State) - handle_info({gen_event_EXIT, Module, {'EXIT', {kill_me, [_KillerHWM, KillerReinstallAfter]}}}, #state{module=Module, sink=Sink} = State) -> %% Brutally kill the manager but stay alive to restore settings. - Manager = whereis(Sink), - unlink(Manager), - exit(Manager, kill), - erlang:send_after(KillerReinstallAfter, self(), reboot), + %% + %% SinkPid here means the gen_event process. Handlers *all* live inside the + %% same gen_event process space, so when the Pid is killed, *all* of the + %% pending log messages in its mailbox will die too. + SinkPid = whereis(Sink), + unlink(SinkPid), + exit(SinkPid, kill), + erlang:send_after(KillerReinstallAfter, self(), {reboot, Sink}), {noreply, State}; handle_info({gen_event_EXIT, Module, Reason}, #state{module=Module, config=Config, sink=Sink} = State) -> @@ -83,8 +87,8 @@ handle_info({gen_event_EXIT, Module, Reason}, #state{module=Module, handle_info(reinstall_handler, #state{module=Module, config=Config, sink=Sink} = State) -> install_handler(Sink, Module, Config), {noreply, State}; -handle_info(reboot, State) -> - lager_app:boot(), +handle_info({reboot, Sink}, State) -> + lager_app:boot(Sink), {noreply, State}; handle_info(stop, State) -> {stop, normal, State};