diff options
author | Linus Nordberg <linus@nordberg.se> | 2014-11-04 12:45:39 +0100 |
---|---|---|
committer | Linus Nordberg <linus@nordberg.se> | 2014-11-04 12:45:39 +0100 |
commit | 90754940d8d86c34d7a0039a6e798e22e43fdc81 (patch) | |
tree | 3bec890e196a2ee23631cdfe7996503f55b54972 /src/stacktrace.erl | |
parent | bbcb238f5232fc29da7d4cb215d2316bd4421b8c (diff) |
Invoke gen_server:call/2 via stacktrace:call/2.stacktrace
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. |