diff options
author | Michael Klishin <klishinm@vmware.com> | 2021-11-29 19:33:13 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-11-29 19:33:13 +0300 |
commit | c9109e0dc1cf6e846a9156f089d9a4857f9be767 (patch) | |
tree | 67a2c8309a6fd090dca2742aa11c13fa9e8c4cf9 | |
parent | 67ad54151557f9e5f08f249a2f8f7eff6a8554ea (diff) | |
parent | 9e351c50e9da0bd345ef1700c62ffb0e60eb64f3 (diff) | |
download | rabbitmq-server-git-c9109e0dc1cf6e846a9156f089d9a4857f9be767.tar.gz |
Merge pull request #3806 from rabbitmq/rabbitmq-server-3803
tcp_listener: avoid logging listener arguments on shutdown
-rw-r--r-- | deps/rabbit/src/tcp_listener.erl | 31 |
1 files changed, 25 insertions, 6 deletions
diff --git a/deps/rabbit/src/tcp_listener.erl b/deps/rabbit/src/tcp_listener.erl index 712280fce1..3997bc4c36 100644 --- a/deps/rabbit/src/tcp_listener.erl +++ b/deps/rabbit/src/tcp_listener.erl @@ -44,7 +44,7 @@ -export([init/1, handle_call/3, handle_cast/2, handle_info/2, terminate/2, code_change/3]). --record(state, {on_startup, on_shutdown, label, ip, port}). +-record(state, {on_shutdown, label, ip, port}). %%---------------------------------------------------------------------------- @@ -63,12 +63,17 @@ start_link(IPAddress, Port, %%-------------------------------------------------------------------- -init({IPAddress, Port, {M,F,A} = OnStartup, OnShutdown, Label}) -> +init({IPAddress, Port, {M, F, A}, OnShutdown, Label}) -> process_flag(trap_exit, true), logger:info("started ~s on ~s:~p", [Label, rabbit_misc:ntoab(IPAddress), Port]), apply(M, F, A ++ [IPAddress, Port]), - {ok, #state{on_startup = OnStartup, on_shutdown = OnShutdown, - label = Label, ip=IPAddress, port=Port}}. + State0 = #state{ + on_shutdown = OnShutdown, + label = Label, + ip = IPAddress, + port = Port + }, + {ok, obfuscate_state(State0)}. handle_call(_Request, _From, State) -> {noreply, State}. @@ -79,9 +84,23 @@ handle_cast(_Msg, State) -> handle_info(_Info, State) -> {noreply, State}. -terminate(_Reason, #state{on_shutdown = {M,F,A}, label=Label, ip=IPAddress, port=Port}) -> +terminate(_Reason, #state{on_shutdown = OnShutdown, label = Label, ip = IPAddress, port = Port}) -> logger:info("stopped ~s on ~s:~p", [Label, rabbit_misc:ntoab(IPAddress), Port]), - apply(M, F, A ++ [IPAddress, Port]). + try + OnShutdown(IPAddress, Port) + catch _:Error -> + logger:error("Failed to stop ~s on ~s:~p: ~p", + [Label, rabbit_misc:ntoab(IPAddress), Port, Error]) + end. code_change(_OldVsn, State, _Extra) -> {ok, State}. + +obfuscate_state(#state{on_shutdown = OnShutdown} = State) -> + {M, F, A} = OnShutdown, + State#state{ + %% avoids arguments from being logged in case of an exception + on_shutdown = fun(IPAddress, Port) -> + apply(M, F, A ++ [IPAddress, Port]) + end + }.
\ No newline at end of file |