【发布时间】:2013-10-21 16:56:27
【问题描述】:
我使用 poolboy 和几乎空的 worker 创建了简单的应用程序,但是当我停止应用程序时,我看到 lager 打印以下错误:
10:50:26.363 [error] Supervisor {<0.236.0>,poolboy_sup} had child test_worker started with test_worker:start_link([]) at undefined exit with reason shutdown in context shutdown_error
是什么导致了这个错误,我该如何解决这个问题?
主管:
-module(test_sup).
-behaviour(supervisor).
-export([start_link/0, init/1]).
start_link() ->
supervisor:start_link({local, ?MODULE}, ?MODULE, []).
init([]) ->
ChildSpecs = [pool_spec()],
{ok, {{one_for_one, 1000, 3600}, ChildSpecs}}.
pool_spec() ->
Name = test_pool,
PoolArgs = [{name, {local, Name}},
{worker_module, test_worker},
{size, 10},
{max_overflow, 20}],
poolboy:child_spec(Name, PoolArgs, []).
工人:
-module(test_worker).
-behaviour(gen_server).
-behaviour(poolboy_worker).
-export([start_link/1]).
-export([init/1, handle_call/3, handle_cast/2,
handle_info/2, terminate/2, code_change/3]).
-record(state, {}).
start_link([]) ->
gen_server:start_link(?MODULE, [], []).
init([]) ->
{ok, #state{}}.
handle_call(_Request, _From, State) ->
{reply, _Reply = ok, State}.
handle_cast(_Msg, State) ->
{noreply, State}.
handle_info(_Info, State) ->
{noreply, State}.
terminate(_Reason, _State) ->
ok.
code_change(_OldVsn, State, _Extra) ->
{ok, State}.
应用程序的其余部分非常标准。
二郎:R16B02
台球男孩:1.0.1
Lager:在撰写问题时来自大师的最新版本 (822062478a223313dce30e5a45e30a50a4b7dc4e)
【问题讨论】:
-
我从未听说过 poolboy,但从他们网站上的示例来看,您似乎需要在 worker 中实现
poolboy_worker行为,不是吗? -
我试过 -behaviour(poolboy_worker) - 没有帮助。更新了帖子中的源代码。
-
我也遇到了这个问题;看起来它还没有在 Poolboy 中修复,而且 Paul 删除链接的建议让我有点恼火......
-
作为一个小更新:建议的修复 github.com/devinus/poolboy/pull/37#issuecomment-27363909 在这里有效。
标签: erlang