fix(shell): do not repeat print shell warnings
This commit is contained in:
parent
eb723489d7
commit
c38725facd
|
@ -33,6 +33,21 @@
|
|||
-define(LOCAL_PROHIBITED, [halt, q]).
|
||||
-define(REMOTE_PROHIBITED, [{erlang, halt}, {c, q}, {init, stop}, {init, restart}, {init, reboot}]).
|
||||
|
||||
-define(WARN_ONCE(Fn, Args),
|
||||
case get(Fn) of
|
||||
true ->
|
||||
ok;
|
||||
_ ->
|
||||
case apply(Fn, Args) of
|
||||
true ->
|
||||
put(Fn, true),
|
||||
ok;
|
||||
false ->
|
||||
ok
|
||||
end
|
||||
end
|
||||
).
|
||||
|
||||
is_locked() ->
|
||||
{ok, false} =/= application:get_env(?APP, ?IS_LOCKED).
|
||||
|
||||
|
@ -72,31 +87,31 @@ is_allowed(prohibited) -> false;
|
|||
is_allowed(_) -> true.
|
||||
|
||||
limit_warning(MF, Args) ->
|
||||
max_heap_size_warning(MF, Args),
|
||||
max_args_warning(MF, Args).
|
||||
?WARN_ONCE(fun max_heap_size_warning/2, [MF, Args]),
|
||||
?WARN_ONCE(fun max_args_warning/2, [MF, Args]).
|
||||
|
||||
max_args_warning(MF, Args) ->
|
||||
ArgsSize = erts_debug:flat_size(Args),
|
||||
case ArgsSize < ?MAX_ARGS_SIZE of
|
||||
case ArgsSize > ?MAX_ARGS_SIZE of
|
||||
true ->
|
||||
ok;
|
||||
false ->
|
||||
warning("[WARNING] current_args_size:~w, max_args_size:~w", [ArgsSize, ?MAX_ARGS_SIZE]),
|
||||
?SLOG(warning, #{
|
||||
msg => "execute_function_in_shell_max_args_size",
|
||||
function => MF,
|
||||
%%args => Args,
|
||||
args_size => ArgsSize,
|
||||
max_heap_size => ?MAX_ARGS_SIZE
|
||||
})
|
||||
max_heap_size => ?MAX_ARGS_SIZE,
|
||||
pid => self()
|
||||
}),
|
||||
true;
|
||||
false ->
|
||||
false
|
||||
end.
|
||||
|
||||
max_heap_size_warning(MF, Args) ->
|
||||
{heap_size, HeapSize} = erlang:process_info(self(), heap_size),
|
||||
case HeapSize < ?MAX_HEAP_SIZE of
|
||||
case HeapSize > ?MAX_HEAP_SIZE of
|
||||
true ->
|
||||
ok;
|
||||
false ->
|
||||
warning("[WARNING] current_heap_size:~w, max_heap_size_warning:~w", [
|
||||
HeapSize, ?MAX_HEAP_SIZE
|
||||
]),
|
||||
|
@ -105,8 +120,12 @@ max_heap_size_warning(MF, Args) ->
|
|||
current_heap_size => HeapSize,
|
||||
function => MF,
|
||||
args => pp_args(Args),
|
||||
max_heap_size => ?MAX_HEAP_SIZE
|
||||
})
|
||||
max_heap_size => ?MAX_HEAP_SIZE,
|
||||
pid => self()
|
||||
}),
|
||||
true;
|
||||
false ->
|
||||
false
|
||||
end.
|
||||
|
||||
log(_, {?MODULE, prompt_func}, [[{history, _}]]) ->
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
Fix excessive warning message print in remote console shell.
|
||||
|
Loading…
Reference in New Issue