From 8063f28d668e348ed78645eaf5d7b4cc3ba0759b Mon Sep 17 00:00:00 2001 From: SisMaker <1713699517@qq.com> Date: Fri, 2 Jul 2021 11:42:25 +0800 Subject: [PATCH] =?UTF-8?q?ft:=20=E4=BB=A3=E7=A0=81=E6=95=B4=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- eLog.sample.config | 2 +- include/lgDef.hrl | 8 ++--- src/backend/lgBkdConsole.erl | 2 +- src/backend/lgBkdFile.erl | 26 ++++++---------- src/crashLog/lgCrashLog.erl | 13 ++++---- src/eLog.erl | 57 +++++++++++++++++----------------- src/eLog_app.erl | 12 +++---- src/errLogger/lgErrLoggerH.erl | 12 +++---- src/mgrKiller/lgMgrKiller.erl | 18 +++++------ src/utils/lgUtil.erl | 8 ++--- src/watcher/lgHWatcherSrv.erl | 2 +- 12 files changed, 78 insertions(+), 84 deletions(-) diff --git a/README.md b/README.md index 7b4f8bb..fc90805 100644 --- a/README.md +++ b/README.md @@ -134,7 +134,7 @@ Examples: 错误记录器集成 ------------------------ error_logger贮藏啤酒还提供了一个处理程序模块,该模块将传统的erlang错误消息转换为更友好的格式,并将其发送到贮藏啤酒中,以像常规贮藏啤酒日志调用一样对待。 -要禁用此功能,请将更大的应用程序变量设置error_logger_redirect为false。您也可以通过设置变量OTP和牛仔消息禁用重新格式化 errLoggerFormatRaw 为 true。 +要禁用此功能,请将更大的应用程序变量设置error_logger_redirect为false。您也可以通过设置变量OTP和牛仔消息禁用重新格式化 errLoggerFmtRaw 为 true。 如果您将自己的处理程序安装到中error_logger,则可以通过使用error_logger_whitelist环境变量和允许的处理程序列表来告诉lager使其不被处理。 diff --git a/eLog.sample.config b/eLog.sample.config index 0719db7..21467ab 100644 --- a/eLog.sample.config +++ b/eLog.sample.config @@ -84,7 +84,7 @@ %% errLogger group leader策略 handle | ignore | mirror {errLoggerGLS, handle}, %%是否禁止 disable reformatting for OTP and Cowboy messages - {errLoggerFormatRaw, false}, + {errLoggerFmtRaw, false}, %% 超过高水位标记时,可以将啤酒配置为刷新消息队列中的所有事件通知 {errLoggerFlushQueue, true}, %% 如果flush_queue为true,则可以设置消息队列长度阈值,在该阈值处将开始丢弃消息。默认阈值为0,这意味着如果flush_queue为true, diff --git a/include/lgDef.hrl b/include/lgDef.hrl index d09bc4f..919d950 100644 --- a/include/lgDef.hrl +++ b/include/lgDef.hrl @@ -39,7 +39,7 @@ {date, string()} | {count, non_neg_integer()} | {rotator, atom()} | - {hWM, non_neg_integer()} | + {hwm, non_neg_integer()} | %% 对于特定的接收器事件队列刷新,请使用改选项 {flushQueue, boolean()} | %% 对于接收器 如果flush_queue为true,则可以设置消息队列长度阈值,在该阈值处将开始丢弃消息。默认阈值为0, @@ -62,7 +62,7 @@ -define(LgDefSyncInt, 1000). %% 单位毫秒 -define(LgDefSyncSize, 1024 * 64). %% 64kb -define(LgDefCheckInt, 1000). %% 单位毫秒 --define(LgDefCheckHWM, undefined). +-define(LgDefCheckHwm, undefined). -define(LgDefFlushQueue, false). -define(LgDefFlushThr, 10). -define(LgDefFmtTer, lgFmtTer). @@ -92,8 +92,8 @@ , flushThr = 0 :: integer() %% timer , timer = make_ref() :: reference() - %% optional filter fun to avoid counting suppressed messages against HWM totals - %% 可选的过滤器函数,以避免对HWM总数计算抑制消息 + %% optional filter fun to avoid counting suppressed messages against Hwm totals + %% 可选的过滤器函数,以避免对Hwm总数计算抑制消息 , filter = fun(_) -> false end :: fun() }). diff --git a/src/backend/lgBkdConsole.erl b/src/backend/lgBkdConsole.erl index f04043d..9067b79 100644 --- a/src/backend/lgBkdConsole.erl +++ b/src/backend/lgBkdConsole.erl @@ -107,7 +107,7 @@ handleInfo(_Msg, _State) -> terminate(removeEpm, State) -> %% have to do this asynchronously because we're in the event handlr - spawn(fun() -> eLog:clear_trace_by_destination(State#state.id) end), + spawn(fun() -> eLog:clearTraceByDestination(State#state.id) end), ok; terminate(_Reason, _State) -> ok. diff --git a/src/backend/lgBkdFile.erl b/src/backend/lgBkdFile.erl index 5e6adb9..b8d0194 100644 --- a/src/backend/lgBkdFile.erl +++ b/src/backend/lgBkdFile.erl @@ -59,7 +59,7 @@ init(Opts) -> Size = lgUtil:get_opt(size, Opts, ?LgDefRotateSize), Count = lgUtil:get_opt(count, Opts, ?LgDefRotateCnt), Rotator = lgUtil:get_opt(rotator, Opts, ?LgDefRotateMod), - HWM = lgUtil:get_opt(hWM, Opts, ?LgDefCheckHWM), + Hwm = lgUtil:get_opt(hwm, Opts, ?LgDefCheckHwm), FlushQueue = lgUtil:get_opt(flushQueue, Opts, ?LgDefFlushQueue), FlushThr = lgUtil:get_opt(flushThr, Opts, ?LgDefFlushThr), SyncInt = lgUtil:get_opt(syncInt, Opts, ?LgDefSyncInt), @@ -75,18 +75,10 @@ init(Opts) -> CheckInt = ?IIF(CfgCheckInt == always, 0, CfgCheckInt), {ok, Date} = lgUtil:parseRotateSpec(CfgDate), FileName = lgUtil:parsePath(RelName), - - FmtCfg = - case CfgFmtCfg of - [] -> - MdWhitelist = lgUtil:get_env(mdWhitelist, []), - lgFmtTer:fmtCfg(MdWhitelist); - _ -> - CfgFmtCfg - end, - scheduleRotation(Date, FileName), - Shaper = #lgShaper{hwm = HWM, flushQueue = FlushQueue, flushThr = FlushThr, id = FileName}, + FmtCfg = ?IIF(CfgFmtCfg =/= [], CfgFmtCfg, begin MdWhitelist = lgUtil:get_env(mdWhitelist, []), lgFmtTer:fmtCfg(MdWhitelist) end), + + Shaper = #lgShaper{hwm = Hwm, flushQueue = FlushQueue, flushThr = FlushThr, id = FileName}, TemState = #state{ fileName = FileName, level = Level, size = Size, date = Date , count = Count, rotator = Rotator, shaper = Shaper @@ -114,13 +106,13 @@ handleCall({mSetLogLevel, Level}, #state{fileName = FileName} = State) -> end; handleCall({mSetLogHwm, Hwm}, #state{shaper = Shaper, fileName = FileName} = State) -> - case checkOpts([{hWM, Hwm}], true) of + case checkOpts([{hwm, Hwm}], true) of false -> - {reply, {error, bad_log_hwm}, State}; + {reply, {error, badHwm}, State}; _ -> NewShaper = Shaper#lgShaper{hwm = Hwm}, ?INT_LOG(notice, "Changed loghwm of ~ts to ~p", [FileName, Hwm]), - {reply, {last_loghwm, Shaper#lgShaper.hwm}, State#state{shaper = NewShaper}} + {reply, {lastHwm, Shaper#lgShaper.hwm}, State#state{shaper = NewShaper}} end; handleCall(mRotate, State = #state{fileName = File}) -> {ok, NewState} = handleInfo({mRotate, File}, State), @@ -175,7 +167,7 @@ handleInfo({mShaperExpired, Name}, #state{shaper = Shaper, fileName = Name, fmtT ReportMsg = #lgMsg{severity = ?warning, pid = self(), node = node(), module = ?MODULE, function = ?FUNCTION_NAME, line = ?LINE, metadata = [], datetime = NowStr, timestamp = NowMs, message = ReportStr, destinations = []}, writeLog(State, NowMs, ?warning, FmtTer:format(ReportMsg, FmtCfg)) end, - {ok, State#state{shaper = Shaper#lgShaper{dropped = 0, mps = 0, lastTime = lgTime:now()}}}; + {ok, State#state{shaper = Shaper#lgShaper{dropped = 0}}}; handleInfo(_Msg, _State) -> ?ERR("~p info receive unexpect msg ~p ~n ", [?MODULE, _Msg]), kpS. @@ -274,7 +266,7 @@ checkOpts([{count, Count} | Tail], IsFile) when is_integer(Count), Count >= 0 -> checkOpts(Tail, IsFile); checkOpts([{rotator, Rotator} | Tail], IsFile) when is_atom(Rotator) -> checkOpts(Tail, IsFile); -checkOpts([{hWM, HighWaterMark} | Tail], IsFile) when is_integer(HighWaterMark), HighWaterMark >= 0 -> +checkOpts([{hwm, HighWaterMark} | Tail], IsFile) when is_integer(HighWaterMark), HighWaterMark >= 0 -> checkOpts(Tail, IsFile); checkOpts([{date, _Date} | Tail], IsFile) -> checkOpts(Tail, IsFile); diff --git a/src/crashLog/lgCrashLog.erl b/src/crashLog/lgCrashLog.erl index 6eed7cc..34af5c1 100644 --- a/src/crashLog/lgCrashLog.erl +++ b/src/crashLog/lgCrashLog.erl @@ -133,16 +133,17 @@ saslLimitedStr(supervisor_report, Report, FmtMaxBytes) -> Context = lgUtil:sup_get(errorContext, Report), Reason = lgUtil:sup_get(reason, Report), Offender = lgUtil:sup_get(offender, Report), - FmtString = <<" Supervisor: ~p~n Context: ~p~n Reason: " - "~s~n Offender: ~s~n~n">>, + FmtString = <<" Supervisor: ~p~n Context: ~p~n Reason: ~s~n Offender: ~s~n~n">>, ReasonStr = eFmt:formatBin(<<"~p">>, [Reason], [{charsLimit, FmtMaxBytes}]), OffenderStr = eFmt:formatBin(<<"~p">>, [Offender], [{charsLimit, FmtMaxBytes}]), eFmt:format(FmtString, [Name, Context, ReasonStr, OffenderStr]); saslLimitedStr(progress, Report, FmtMaxBytes) -> - [begin - BinStr = eFmt:formatBin(<<"~p">>, [Data], [{charsLimit, FmtMaxBytes}]), - eFmt:formatBin(" ~16w: ~s~n", [Tag, BinStr]) - end || {Tag, Data} <- Report]; + [ + begin + BinStr = eFmt:formatBin(<<"~p">>, [Data], [{charsLimit, FmtMaxBytes}]), + eFmt:formatBin(" ~16w: ~s~n", [Tag, BinStr]) + end || {Tag, Data} <- Report + ]; saslLimitedStr(crash_report, Report, FmtMaxBytes) -> eFmt:formatBin("~p~n", [Report], [{charsLimit, FmtMaxBytes}]). diff --git a/src/eLog.erl b/src/eLog.erl index 946a879..f739eda 100644 --- a/src/eLog.erl +++ b/src/eLog.erl @@ -51,9 +51,9 @@ , remove_trace/1 , trace_state/3 , trace_func/3 - , list_all_sinks/0 - , clear_all_traces/0 - , clear_trace_by_destination/1 + , listAllSinks/0 + , clearAllTraces/0 + , clearTraceByDestination/1 , stop_trace/1 , stop_trace/3 , status/0 @@ -321,7 +321,7 @@ trace_console(Filter, Level) -> stop_trace(Backend, Filter, Level) -> case validateTraceFilters(Filter, Level, Backend) of {Sink, {ok, Trace}} -> - stop_trace_int(Trace, Sink); + stopTraceInt(Trace, Sink); {_Sink, Error} -> Error end. @@ -349,7 +349,7 @@ validateTraceFilters(Filters, Level, Backend) -> %% %% and when they come back from validation, they're %% `{Filter, Level, Backend}' -stop_trace_int({_Filter, _Level, Backend} = Trace, Sink) -> +stopTraceInt({_Filter, _Level, Backend} = Trace, Sink) -> Traces = lgConfig:ptGet({Sink, trace}, []), NewTraces = lists:delete(Trace, Traces), _ = lgUtil:trace_filter([element(1, T) || T <- NewTraces]), @@ -388,15 +388,16 @@ install_trace(Pid, Level, Options) -> remove_trace(Pid) -> sys:remove(Pid, fun ?MODULE:trace_func/3). -list_all_sinks() -> +listAllSinks() -> sets:to_list( - lists:foldl(fun({_Watcher, _Handler, Sink}, Set) -> - sets:add_element(Sink, Set) - end, - sets:new(), - lgConfig:ptGet(handlers, []))). - -clear_traces_by_sink(Sinks) -> + lists:foldl( + fun({_Watcher, _Handler, Sink}, Set) -> + sets:add_element(Sink, Set) + end, sets:new(), lgConfig:ptGet(handlers, []) + ) + ). + +clearTracesBySink(Sinks) -> lists:foreach( fun(S) -> lgConfig:ptSet({S, trace}, []), @@ -405,15 +406,15 @@ clear_traces_by_sink(Sinks) -> Sinks). -clear_trace_by_destination(ID) -> - Sinks = lists:sort(list_all_sinks()), - Traces = find_traces(Sinks), - [stop_trace_int({Filter, Level, Destination}, Sink) || {Sink, {Filter, Level, Destination}} <- Traces, Destination == ID]. +clearTraceByDestination(ID) -> + Sinks = lists:sort(listAllSinks()), + Traces = findTraces(Sinks), + [stopTraceInt({Filter, Level, Destination}, Sink) || {Sink, {Filter, Level, Destination}} <- Traces, Destination == ID]. -clear_all_traces() -> +clearAllTraces() -> Handlers = lgConfig:ptGet(handlers, []), - clear_traces_by_sink(list_all_sinks()), + clearTracesBySink(listAllSinks()), _ = lgUtil:trace_filter(none), lgConfig:ptSet(handlers, lists:filter( @@ -427,18 +428,18 @@ clear_all_traces() -> end end, Handlers)). -find_traces(Sinks) -> - lists:foldl(fun(S, Acc) -> - Traces = lgConfig:ptGet({S, trace}, []), - Acc ++ lists:map(fun(T) -> {S, T} end, Traces) - end, - [], - Sinks). +findTraces(Sinks) -> + lists:foldl( + fun(S, Acc) -> + Traces = lgConfig:ptGet({S, trace}, []), + Acc ++ lists:map(fun(T) -> {S, T} end, Traces) + end, + [], Sinks). status() -> Handlers = lgConfig:ptGet(handlers, []), - Sinks = lists:sort(list_all_sinks()), - Traces = find_traces(Sinks), + Sinks = lists:sort(listAllSinks()), + Traces = findTraces(Sinks), TraceCount = case length(Traces) of 0 -> 1; N -> N diff --git a/src/eLog_app.erl b/src/eLog_app.erl index 252013a..26f0206 100644 --- a/src/eLog_app.erl +++ b/src/eLog_app.erl @@ -96,12 +96,12 @@ tryStartAsyncMgr(Threshold, Window, Sink) -> ok. tryInstallKiller(undefined, _ReTime, _Sink) -> ok; -tryInstallKiller(HWM, ReTime, Sink) -> +tryInstallKiller(Hwm, ReTime, Sink) -> case ReTime of undefined -> - _ = supervisor:start_child(lgHWatcherSup, [Sink, lgMgrKiller, [HWM, 5000]]); + _ = supervisor:start_child(lgHWatcherSup, [Sink, lgMgrKiller, [Hwm, 5000]]); _ -> - _ = supervisor:start_child(lgHWatcherSup, [Sink, lgMgrKiller, [HWM, ReTime]]) + _ = supervisor:start_child(lgHWatcherSup, [Sink, lgMgrKiller, [Hwm, ReTime]]) end, ok. @@ -138,8 +138,8 @@ startHandler(Sink, Module, Config) -> {Module, Watcher, Sink}. -spec tryStartErrLoggerHandler(boolean(), pos_integer(), list()) -> list(). -tryStartErrLoggerHandler(false, _HWM, _Whitelist) -> []; -tryStartErrLoggerHandler(_ErrLoggerRedirect, HWM, WhiteList) -> +tryStartErrLoggerHandler(false, _Hwm, _Whitelist) -> []; +tryStartErrLoggerHandler(_ErrLoggerRedirect, Hwm, WhiteList) -> case whereis(error_logger) of undefined -> %% 在OTP 21及以上版本中,error_logger已弃用,而改用 'logger' @@ -158,7 +158,7 @@ tryStartErrLoggerHandler(_ErrLoggerRedirect, HWM, WhiteList) -> %% capture which handlers we removed from error_logger so we can restore them when lager stops %% 捕获从error_logger中删除的处理程序,以便在lager停止时恢复它们 OldHandlers = - case supervisor:start_child(lgHWatcherSup, [error_logger, lgErrLoggerH, [HWM, lgUtil:get_env(errLoggerGLS, handle)]]) of + case supervisor:start_child(lgHWatcherSup, [error_logger, lgErrLoggerH, [Hwm, lgUtil:get_env(errLoggerGLS, handle)]]) of {ok, _} -> [begin error_logger:delete_report_handler(X), X end || X <- gen_event:which_handlers(error_logger) -- [lgErrLoggerH | WhiteList]]; {error, _} -> diff --git a/src/errLogger/lgErrLoggerH.erl b/src/errLogger/lgErrLoggerH.erl index 0a1d956..faf6351 100644 --- a/src/errLogger/lgErrLoggerH.erl +++ b/src/errLogger/lgErrLoggerH.erl @@ -23,8 +23,8 @@ , handle_call/2 , handle_event/2 , handle_info/2 - , terminate/2, - code_change/3 + , terminate/2 + , code_change/3 ]). -record(state, { @@ -68,7 +68,7 @@ init([HighWaterMark, GlStrategy]) -> Flush = lgUtil:get_env(errLoggerFlushQueue, true), FlushThr = lgUtil:get_env(errLoggerFlushThr, 20), Shaper = #lgShaper{hwm = HighWaterMark, flushQueue = Flush, flushThr = FlushThr, filter = shaperFun(), id = ?MODULE}, - Raw = lgUtil:get_env(errLoggerFormatRaw, false), + Raw = lgUtil:get_env(errLoggerFmtRaw, false), Sink = configSink(), {ok, #state{sink = Sink, shaper = Shaper, groupleader_strategy = GlStrategy, raw = Raw}}. @@ -130,7 +130,7 @@ handle_info({mShaperExpired, ?MODULE}, #state{sink = Sink, shaper = Shaper} = St Dropped -> ?LOGFMT(Sink, warning, self(), "lager_error_logger_h dropped ~p messages in the last second that exceeded the limit of ~p messages/sec", [Dropped, Shaper#lgShaper.hwm]) end, - {ok, State#state{shaper = Shaper#lgShaper{dropped = 0, mps = 0, lastTime = lgTime:now()}}}; + {ok, State#state{shaper = Shaper#lgShaper{dropped = 0}}}; handle_info(_Info, State) -> {ok, State}. @@ -138,7 +138,7 @@ terminate(_Reason, _State) -> ok. code_change(_OldVsn, {state, Shaper, GLStrategy}, _Extra) -> - Raw = lgUtil:get_env(errLoggerFormatRaw, false), + Raw = lgUtil:get_env(errLoggerFmtRaw, false), {ok, #state{ sink = configSink(), shaper = Shaper, @@ -146,7 +146,7 @@ code_change(_OldVsn, {state, Shaper, GLStrategy}, _Extra) -> raw = Raw }}; code_change(_OldVsn, {state, Sink, Shaper, GLS}, _Extra) -> - Raw = lgUtil:get_env(errLoggerFormatRaw, false), + Raw = lgUtil:get_env(errLoggerFmtRaw, false), {ok, #state{sink = Sink, shaper = Shaper, groupleader_strategy = GLS, raw = Raw}}; code_change(_OldVsn, State, _Extra) -> {ok, State}. diff --git a/src/mgrKiller/lgMgrKiller.erl b/src/mgrKiller/lgMgrKiller.erl index 453e548..a9b5b4b 100644 --- a/src/mgrKiller/lgMgrKiller.erl +++ b/src/mgrKiller/lgMgrKiller.erl @@ -26,26 +26,26 @@ kill_me() -> gen_emm:call(lgEvent, ?MODULE, mKillSelf). -init([KillerHWM, KillerReinstallAfter]) -> - {ok, #state{killerHwm = KillerHWM, killerReTime = KillerReinstallAfter}}. +init([KillerHwm, KillerReinstallAfter]) -> + {ok, #state{killerHwm = KillerHwm, killerReTime = KillerReinstallAfter}}. handleCall(mGetLogLevel, State) -> {replay, ?none, State}; handleCall({mSetLogLevel, _Level}, State) -> {replay, ok, State}; -handleCall(mGetSettings, State = #state{killerHwm = KillerHWM, killerReTime = KillerReinstallAfter}) -> - {replay, [KillerHWM, KillerReinstallAfter], State}; -handleCall(mKillSelf, #state{killerHwm = KillerHWM, killerReTime = KillerReinstallAfter}) -> - exit({kill_me, [KillerHWM, KillerReinstallAfter]}); +handleCall(mGetSettings, State = #state{killerHwm = KillerHwm, killerReTime = KillerReinstallAfter}) -> + {replay, [KillerHwm, KillerReinstallAfter], State}; +handleCall(mKillSelf, #state{killerHwm = KillerHwm, killerReTime = KillerReinstallAfter}) -> + exit({kill_me, [KillerHwm, KillerReinstallAfter]}); handleCall(_Request, State) -> {replay, ok, State}. %% 检查每个日志消息的队列长度不是世界上最好的主意。我们将来可以使此操作在轮询计时器上起作用。 -handleEvent({mWriteLog, _Message}, State = #state{killerHwm = KillerHWM, killerReTime = KillerReinstallAfter}) -> +handleEvent({mWriteLog, _Message}, State = #state{killerHwm = KillerHwm, killerReTime = KillerReinstallAfter}) -> {_, Len} = process_info(self(), message_queue_len), - case Len > KillerHWM of + case Len > KillerHwm of true -> - exit({kill_me, [KillerHWM, KillerReinstallAfter]}); + exit({kill_me, [KillerHwm, KillerReinstallAfter]}); _ -> {ok, State} end; diff --git a/src/utils/lgUtil.erl b/src/utils/lgUtil.erl index d061d97..8076bd8 100644 --- a/src/utils/lgUtil.erl +++ b/src/utils/lgUtil.erl @@ -518,7 +518,7 @@ find_file(File1, [{{lgBkdFile, File2}, _Handler, _Sink} = HandlerInfo | Handlers find_file(File1, [_HandlerInfo | Handlers]) -> find_file(File1, Handlers). -%% conditionally check the HWM if the event would not have been filtered +%% conditionally check the Hwm if the event would not have been filtered checkHwm(Shaper = #lgShaper{filter = Filter}, Event) -> case Filter(Event) of true -> @@ -539,15 +539,15 @@ checkHwm(#lgShaper{id = Id, hwm = Hwm, mps = Mps, lastTime = LastTime, dropped = {true, 0, Shaper#lgShaper{mps = Mps + 1}}; _ -> %different second - reset mps - {true, 0, Shaper#lgShaper{dropped = 0, mps = 1, lastTime = NowTime}} + {true, 0, Shaper#lgShaper{mps = 1, lastTime = NowTime}} end; true -> %% are we still in the same second? NowTimeMs = lgTime:nowMs(), NowTime = NowTimeMs div 1000, - PastMs = NowTimeMs rem 1000, case LastTime == NowTime of true -> + PastMs = NowTimeMs rem 1000, %% still in same second, but have exceeded the high water mark NewDrops = ?IIF(isNeedFlush(FlushQueue, FlushThr), dropMsg(NowTime, Filter, 0), 0), NewTimer = ?IIF(erlang:read_timer(Timer) =/= false, Timer, erlang:send_after(1000 - PastMs, self(), {mShaperExpired, Id})), @@ -555,7 +555,7 @@ checkHwm(#lgShaper{id = Id, hwm = Hwm, mps = Mps, lastTime = LastTime, dropped = _ -> _ = erlang:cancel_timer(Shaper#lgShaper.timer), %% different second, reset all counters and allow it - {drop, Drop, Shaper#lgShaper{dropped = 0, mps = 1, lastTime = NowTime}} + {drop, Drop, Shaper#lgShaper{mps = 1, lastTime = NowTime}} end end. diff --git a/src/watcher/lgHWatcherSrv.erl b/src/watcher/lgHWatcherSrv.erl index 18ad02d..8d54888 100644 --- a/src/watcher/lgHWatcherSrv.erl +++ b/src/watcher/lgHWatcherSrv.erl @@ -47,7 +47,7 @@ handleInfo({gen_event_EXIT, Module, normal}, #state{module = Module} = State) -> {stop, normal, State}; handleInfo({gen_event_EXIT, Module, shutdown}, #state{module = Module} = State) -> {stop, normal, State}; -handleInfo({gen_event_EXIT, Module, {'EXIT', {kill_me, [_KillerHWM, KillerReinstallAfter]}}}, #state{module = Module, sink = Sink, config = Config} = State) -> +handleInfo({gen_event_EXIT, Module, {'EXIT', {kill_me, [_KillerHwm, KillerReinstallAfter]}}}, #state{module = Module, sink = Sink, config = Config} = State) -> %% Brutally kill the manager but stay alive to restore settings. %% %% SinkPid here means the gen_event process. Handlers *all* live inside the