diff options
| author | Linus Nordberg <linus@nordberg.se> | 2014-11-04 12:45:39 +0100 |
|---|---|---|
| committer | Magnus Ahltorp <map@kth.se> | 2014-11-14 13:34:02 +0100 |
| commit | 124b79a8fed213c31db0360dd75c53fc415b5ab2 (patch) | |
| tree | 944d9a22a00be73a0f58b7232905553ecc22452e /src/stacktrace.erl | |
| parent | 89a6ea31f0646f2a3ccbbca521b038d7ef811da3 (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.erl | 18 |
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. |
