summaryrefslogtreecommitdiff
path: root/src/stacktrace.erl
diff options
context:
space:
mode:
authorLinus Nordberg <linus@nordberg.se>2014-11-04 12:45:39 +0100
committerLinus Nordberg <linus@nordberg.se>2014-11-04 12:45:39 +0100
commit90754940d8d86c34d7a0039a6e798e22e43fdc81 (patch)
tree3bec890e196a2ee23631cdfe7996503f55b54972 /src/stacktrace.erl
parentbbcb238f5232fc29da7d4cb215d2316bd4421b8c (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.