summaryrefslogtreecommitdiff
path: root/src/stacktrace.erl
diff options
context:
space:
mode:
authorLinus Nordberg <linus@nordberg.se>2014-11-04 12:45:39 +0100
committerMagnus Ahltorp <map@kth.se>2014-11-14 13:34:02 +0100
commit124b79a8fed213c31db0360dd75c53fc415b5ab2 (patch)
tree944d9a22a00be73a0f58b7232905553ecc22452e /src/stacktrace.erl
parent89a6ea31f0646f2a3ccbbca521b038d7ef811da3 (diff)
Invoke gen_server:call/2 via stacktrace:call/2.
stacktrace:call() logs an error if the gen_server:call() throws timeout.
Diffstat (limited to 'src/stacktrace.erl')
-rw-r--r--src/stacktrace.erl18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/stacktrace.erl b/src/stacktrace.erl
new file mode 100644
index 0000000..3de4772
--- /dev/null
+++ b/src/stacktrace.erl
@@ -0,0 +1,18 @@
+%%% Copyright (c) 2014, NORDUnet A/S.
+%%% See LICENSE for licensing information.
+
+-module(stacktrace).
+-export([call/2]).
+
+call(Name, Request) ->
+ Result = (catch gen_server:call(Name, Request)),
+ case Result of
+ {'EXIT', {timeout, Details}} ->
+ {current_stacktrace, Stacktrace} =
+ erlang:process_info(whereis(Name), current_stacktrace),
+ lager:error("~p: timeout ~p: ~p", [Name, Details, Stacktrace]),
+ throw(Result);
+ _ ->
+ none
+ end,
+ Result.