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

openSUSE Build Service is sponsored by