diff --git a/scripts/update_appup.escript b/scripts/update_appup.escript index fc6447f38..dd8dd9ca2 100755 --- a/scripts/update_appup.escript +++ b/scripts/update_appup.escript @@ -272,8 +272,9 @@ merge_update_actions(App, Changes, Vsns, PrevVersion) -> end, Vsns). -%% say current version is 1.1.2, and the compare baes is version 1.1.1, but there is a 1.1.2 in appup -%% we may skip merging instructions for 1.1.2 (it's never used) +%% say current version is 1.1.3, and the compare base is version 1.1.1, +%% but there is a 1.1.2 in appup we may skip merging instructions for +%% 1.1.2 because it's not used and no way to know what has been changed is_skipped_version(App, Vsn, PrevVersion) when is_list(Vsn) andalso is_list(PrevVersion) -> case is_app_external(App) andalso parse_version_number(Vsn) of {ok, VsnTuple} -> @@ -287,7 +288,7 @@ is_skipped_version(App, Vsn, PrevVersion) when is_list(Vsn) andalso is_list(Prev false end; is_skipped_version(_App, _Vsn, _PrevVersion) -> - %% if app version is a regexp, we don't konw for sure + %% if app version is a regexp, we don't know for sure %% return 'false' to be on the safe side false. diff --git a/src/emqx_os_mon.erl b/src/emqx_os_mon.erl index ab637645d..c4aa04a46 100644 --- a/src/emqx_os_mon.erl +++ b/src/emqx_os_mon.erl @@ -115,15 +115,15 @@ init([Opts]) -> %% make sure memsup will not emit system memory alarms memsup:set_sysmem_high_watermark(1), set_procmem_high_watermark(proplists:get_value(procmem_high_watermark, Opts)), - MemCehckInterval = do_resolve_mem_check_interval(proplists:get_value(mem_check_interval, Opts)), + MemCheckInterval = do_resolve_mem_check_interval(proplists:get_value(mem_check_interval, Opts)), SysHW = resolve_watermark(proplists:get_value(sysmem_high_watermark, Opts)), St = ensure_check_timer(#{cpu_high_watermark => proplists:get_value(cpu_high_watermark, Opts), cpu_low_watermark => proplists:get_value(cpu_low_watermark, Opts), cpu_check_interval => proplists:get_value(cpu_check_interval, Opts), sysmem_high_watermark => SysHW, - mem_check_interval => MemCehckInterval, + mem_check_interval => MemCheckInterval, timer => undefined}), - ok = do_set_mem_check_interval(MemCehckInterval), + ok = do_set_mem_check_interval(MemCheckInterval), %% update immediately after start/restart ok = update_mem_alarm_status(SysHW), {ok, ensure_mem_check_timer(St)}. @@ -165,8 +165,6 @@ handle_call(Req, _From, State) -> ?LOG(error, "Unexpected call: ~p", [Req]), {reply, ignored, State}. -handle_cast(upgrade, State) -> - {noreply, State}; handle_cast(Msg, State) -> ?LOG(error, "Unexpected cast: ~p", [Msg]), {noreply, State}. @@ -234,7 +232,9 @@ ensure_mem_check_timer(State) -> mem_check_interval => Interval }; false -> - State + State#{mem_check_timer => undefined, + mem_check_interval => Interval + } end. resolve_mem_check_interval(#{mem_check_interval := Seconds}) when is_integer(Seconds) -> @@ -281,6 +281,15 @@ resolve_watermark(W) when W > 0 andalso W =< 100 -> W. update_mem_alarm_status(SysHW) -> + case is_sysmem_check_supported() of + true -> + do_update_mem_alarm_status(SysHW); + false -> + %% in case the old alarm is activated + ok = emqx_alarm:ensure_deactivated(high_system_memory_usage, #{reason => disabled}) + end. + +do_update_mem_alarm_status(SysHW) -> Usage = current_sysmem_percent(), case Usage > SysHW of true ->