summaryrefslogtreecommitdiff
path: root/src/stacktrace.erl
blob: 39245e11cd4d00c03319695509ed989b8103033f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
%%% Copyright (c) 2014-2015, NORDUnet A/S.
%%% See LICENSE for licensing information.

-module(stacktrace).
-export([call/2, call/3]).

call(Name, Request) ->
    call(Name, Request, 5000).

call(Name, Request, Timeout) ->
    Result = (catch gen_server:call(Name, Request, Timeout)),
    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.