File 0001-Avoid-using-erlang-get_stacktrace-0-for-improved-OTP.patch of Package rabbitmq-server
From cbf147537ebfa057ce111b8fac95beb69b7e04c0 Mon Sep 17 00:00:00 2001
From: Michael Klishin <michael@clojurewerkz.org>
Date: Thu, 27 Feb 2020 22:33:24 +0300
Subject: [PATCH] Avoid using erlang:get_stacktrace/0 for improved OTP 23/24
compat
(cherry picked from commit 8ce1f32351a1536f687eb7e797be6e53b283c730)
---
src/rabbit_channel.erl | 4 ++--
src/rabbit_node_monitor.erl | 4 ++--
src/rabbit_reader.erl | 5 ++---
src/rabbit_vhost_process.erl | 4 ++--
4 files changed, 8 insertions(+), 9 deletions(-)
diff --git a/src/rabbit_channel.erl b/src/rabbit_channel.erl
index 3c4478ab54..43b313e2df 100644
--- a/src/rabbit_channel.erl
+++ b/src/rabbit_channel.erl
@@ -587,8 +587,8 @@ handle_cast({method, Method, Content, Flow},
exit:Reason = #amqp_error{} ->
MethodName = rabbit_misc:method_record_type(Method),
handle_exception(Reason#amqp_error{method = MethodName}, State);
- _:Reason ->
- {stop, {Reason, erlang:get_stacktrace()}, State}
+ _:Reason:Stacktrace ->
+ {stop, {Reason, Stacktrace}, State}
end;
handle_cast(ready_for_close, State = #ch{state = closing,
diff --git a/src/rabbit_node_monitor.erl b/src/rabbit_node_monitor.erl
index cc2558bb29..9576cd701b 100644
--- a/src/rabbit_node_monitor.erl
+++ b/src/rabbit_node_monitor.erl
@@ -740,10 +740,10 @@ register_outside_app_process(Fun, WaitForExistingProcess) ->
do_run_outside_app_fun(Fun) ->
try
Fun()
- catch _:E ->
+ catch _:E:Stacktrace ->
rabbit_log:error(
"rabbit_outside_app_process:~n~p~n~p~n",
- [E, erlang:get_stacktrace()])
+ [E, Stacktrace])
end.
wait_for_cluster_recovery(Condition) ->
diff --git a/src/rabbit_reader.erl b/src/rabbit_reader.erl
index 84eed93811..defc7a7fd7 100644
--- a/src/rabbit_reader.erl
+++ b/src/rabbit_reader.erl
@@ -1128,9 +1128,8 @@ handle_method0(MethodName, FieldsBin,
throw({connection_closed_abruptly, State});
exit:#amqp_error{method = none} = Reason ->
handle_exception(State, 0, Reason#amqp_error{method = MethodName});
- Type:Reason ->
- Stack = erlang:get_stacktrace(),
- handle_exception(State, 0, {Type, Reason, MethodName, Stack})
+ Type:Reason:Stacktrace ->
+ handle_exception(State, 0, {Type, Reason, MethodName, Stacktrace})
end.
handle_method0(#'connection.start_ok'{mechanism = Mechanism,
diff --git a/src/rabbit_vhost_process.erl b/src/rabbit_vhost_process.erl
index 3056006f43..6a35d88a74 100644
--- a/src/rabbit_vhost_process.erl
+++ b/src/rabbit_vhost_process.erl
@@ -59,11 +59,11 @@ init([VHost]) ->
timer:send_interval(Interval, check_vhost),
true = erlang:garbage_collect(),
{ok, VHost}
- catch _:Reason ->
+ catch _:Reason:Stacktrace ->
rabbit_amqqueue:mark_local_durable_queues_stopped(VHost),
rabbit_log:error("Unable to recover vhost ~p data. Reason ~p~n"
" Stacktrace ~p",
- [VHost, Reason, erlang:get_stacktrace()]),
+ [VHost, Reason, Stacktrace]),
{stop, Reason}
end.
--
2.35.3