summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/worker_pool.erl10
-rw-r--r--src/worker_pool_worker.erl2
2 files changed, 7 insertions, 5 deletions
diff --git a/src/worker_pool.erl b/src/worker_pool.erl
index fcacdd5914..5f75a4c660 100644
--- a/src/worker_pool.erl
+++ b/src/worker_pool.erl
@@ -96,9 +96,11 @@ handle_call(next_free, From, State = #state { available = Avail,
case queue:out(Avail) of
{empty, _Avail} ->
{noreply,
- State #state { pending = queue:in({next_free, From}, Pending) }};
+ State #state { pending = queue:in({next_free, From}, Pending) },
+ hibernate};
{{value, WId}, Avail1} ->
- {reply, get_worker_pid(WId), State #state { available = Avail1 }}
+ {reply, get_worker_pid(WId), State #state { available = Avail1 },
+ hibernate}
end;
handle_call(Msg, _From, State) ->
@@ -115,7 +117,7 @@ handle_cast({idle, WId}, State = #state { available = Avail,
{{value, {run_async, Fun}}, Pending1} ->
worker_pool_worker:submit_async(get_worker_pid(WId), Fun),
State #state { pending = Pending1 }
- end};
+ end, hibernate};
handle_cast({run_async, Fun}, State = #state { available = Avail,
pending = Pending }) ->
@@ -126,7 +128,7 @@ handle_cast({run_async, Fun}, State = #state { available = Avail,
{{value, WId}, Avail1} ->
worker_pool_worker:submit_async(get_worker_pid(WId), Fun),
State #state { available = Avail1 }
- end};
+ end, hibernate};
handle_cast(Msg, State) ->
{stop, {unexpected_cast, Msg}, State}.
diff --git a/src/worker_pool_worker.erl b/src/worker_pool_worker.erl
index 5a6ccb1609..8cd84a95ca 100644
--- a/src/worker_pool_worker.erl
+++ b/src/worker_pool_worker.erl
@@ -82,7 +82,7 @@ init([WId]) ->
handle_call({submit, Fun}, From, WId) ->
gen_server2:reply(From, run(Fun)),
ok = worker_pool:idle(WId),
- {noreply, WId};
+ {noreply, WId, hibernate};
handle_call(Msg, _From, State) ->
{stop, {unexpected_call, Msg}, State}.