diff --git a/.travis.yml b/.travis.yml index afea4e6..de5abf9 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,5 +1,9 @@ language: erlang otp_release: + - 21.0.2 + - 20.3 + - 19.3 + - 18.3 - 17.4 - 17.3 - 17.1 diff --git a/rebar.config b/rebar.config index deada4c..1d494ca 100644 --- a/rebar.config +++ b/rebar.config @@ -9,7 +9,7 @@ {profiles, [ {test, [ {plugins, [ - {rebar3_eqc, ".*", {git, "https://github.com/kellymclaughlin/rebar3-eqc-plugin.git", {tag, "0.0.8"}}} + {rebar3_eqc, ".*", {git, "https://github.com/kellymclaughlin/rebar3-eqc-plugin.git", {tag, "0.1.0"}}} ]} ] }]}. diff --git a/rebar.lock b/rebar.lock new file mode 100644 index 0000000..57afcca --- /dev/null +++ b/rebar.lock @@ -0,0 +1 @@ +[]. diff --git a/src/poolboy.erl b/src/poolboy.erl index db4973b..42c5085 100644 --- a/src/poolboy.erl +++ b/src/poolboy.erl @@ -18,6 +18,14 @@ -type pid_queue() :: queue:queue(). -endif. +-ifdef(OTP_RELEASE). %% this implies 21 or higher +-define(EXCEPTION(Class, Reason, Stacktrace), Class:Reason:Stacktrace). +-define(GET_STACK(Stacktrace), Stacktrace). +-else. +-define(EXCEPTION(Class, Reason, _), Class:Reason). +-define(GET_STACK(_), erlang:get_stacktrace()). +-endif. + -type pool() :: Name :: (atom() | pid()) | {Name :: atom(), node()} | @@ -54,9 +62,9 @@ checkout(Pool, Block, Timeout) -> try gen_server:call(Pool, {checkout, CRef, Block}, Timeout) catch - Class:Reason -> + ?EXCEPTION(Class, Reason, Stacktrace) -> gen_server:cast(Pool, {cancel_waiting, CRef}), - erlang:raise(Class, Reason, erlang:get_stacktrace()) + erlang:raise(Class, Reason, ?GET_STACK(Stacktrace)) end. -spec checkin(Pool :: pool(), Worker :: pid()) -> ok. diff --git a/test/poolboy_eqc.erl b/test/poolboy_eqc.erl index 59031d4..b49b413 100644 --- a/test/poolboy_eqc.erl +++ b/test/poolboy_eqc.erl @@ -1,5 +1,5 @@ -module(poolboy_eqc). --compile([export_all]). +-compile([export_all, nowarn_export_all]). -ifdef(TEST). -ifdef(EQC). diff --git a/test/poolboy_tests.erl b/test/poolboy_tests.erl index b0f3b39..552f6e9 100644 --- a/test/poolboy_tests.erl +++ b/test/poolboy_tests.erl @@ -516,7 +516,7 @@ reuses_waiting_monitor_on_worker_exit() -> receive ok -> ok end end), - Worker = receive {worker, Worker} -> Worker end, + Worker = receive {worker, Worker1} -> Worker1 end, Ref = monitor(process, Worker), exit(Worker, kill), receive