summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Klishin <klishinm@vmware.com>2021-11-29 19:33:13 +0300
committerGitHub <noreply@github.com>2021-11-29 19:33:13 +0300
commitc9109e0dc1cf6e846a9156f089d9a4857f9be767 (patch)
tree67a2c8309a6fd090dca2742aa11c13fa9e8c4cf9
parent67ad54151557f9e5f08f249a2f8f7eff6a8554ea (diff)
parent9e351c50e9da0bd345ef1700c62ffb0e60eb64f3 (diff)
downloadrabbitmq-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.erl31
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