From 124b79a8fed213c31db0360dd75c53fc415b5ab2 Mon Sep 17 00:00:00 2001 From: Linus Nordberg Date: Tue, 4 Nov 2014 12:45:39 +0100 Subject: Invoke gen_server:call/2 via stacktrace:call/2. stacktrace:call() logs an error if the gen_server:call() throws timeout. --- src/stacktrace.erl | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 src/stacktrace.erl (limited to 'src/stacktrace.erl') 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. -- cgit v1.1