2015-02-03 5 views
-1

不好 英语, !!!! 내 데이터베이스 연결 풀과 poolboy를 사용 , 나는 GitHub의에 README.md을 읽고 : https://github.com/devinus/poolboy 그러나 마지막에 나는 그것을 시작할 때 나는 오류를 가지고 다음의 poolboy를 시작한 곳 konw하지 않습니다얼랑 데이터베이스 연결 풀 见谅 请

내 프로젝트의 파일 already_started : http://pastebin.com/zus6dGdz 내가 내 http 서버로 카우보이를 사용,하지만 당신은 그것을 무시할 수 있습니다. 1.I가 & 내가 ERL을 사용 2.then 내 프로그램을 실행할 수 있도록 깨끗한 ​​ $ 철근을 컴파일 보강 철근을 사용 $ ERL -pa EBIN/-pa deps/* :

나는이 같은 프로그램을 시작/EBIN는 server_start 을 시작 -s 그러나 다음과 같이 나는 오류를 얻었다!

=CRASH REPORT==== 3-Feb-2015::17:47:27 === 
    crasher: 
    initial call: poolboy:init/1 
    pid: <0.171.0> 
    registered_name: [] 
    exception exit: {{badmatch,{error,{already_started,<0.173.0>}}}, 
        [{poolboy,new_worker,1, 
           [{file,"src/poolboy.erl"},{line,260}]}, 
         {poolboy,prepopulate,3, 
           [{file,"src/poolboy.erl"},{line,281}]}, 
         {poolboy,init,3,[{file,"src/poolboy.erl"},{line,143}]}, 
         {gen_server,init_it,6, 
            [{file,"gen_server.erl"},{line,306}]}, 
         {proc_lib,init_p_do_apply,3, 
           [{file,"proc_lib.erl"},{line,237}]}]} 
     in function gen_server:init_it/6 (gen_server.erl, line 330) 
    ancestors: [hello_erlang_sup,<0.66.0>] 
    messages: [] 
    links: [<0.172.0>,<0.173.0>,<0.170.0>] 
    dictionary: [] 
    trap_exit: true 
    status: running 
    heap_size: 610 
    stack_size: 27 
    reductions: 205 
    neighbours: 
    neighbour: [{pid,<0.173.0>}, 
        {registered_name,db_mongo_handler}, 
        {initial_call,{db_mongo_handler,init,['Argument__1']}}, 
        {current_function,{gen_server,loop,6}}, 
        {ancestors,[<0.172.0>,mg_pool1,hello_erlang_sup,<0.66.0>]}, 
        {messages,[]}, 
        {links,[<0.172.0>,<0.174.0>,<0.171.0>]}, 
        {dictionary,[]}, 
        {trap_exit,false}, 
        {status,waiting}, 
        {heap_size,233}, 
        {stack_size,9}, 
        {reductions,86}] 

문제를 Ths를 해결하기 위해 도와주세요!

답변

3

등록 된 이름이 같은 10 명의 작업자 풀을 시작합니다. 프로세스가 이름으로 등록되고 다른 프로세스가 같은 이름으로 등록하려고 시도하면 오류 already_started이 표시됩니다.

예제 코드에서 poolboy의 작업자 모듈은 db_mongo_handler입니다. Poolboy 첫 번째 노동자 시작할 수 있지만 두 번째 노동자가 시작될 때 already_started와 충돌

start_link(Args) -> 
    gen_server:start_link({local, ?SERVER}, ?MODULE, Args, []). 

로 구현됩니다 db_mongo_handler:start_link/1를 호출하여 근로자 10 명을 시작하려고합니다.

일반적으로 유사한 근로자가 많은 풀의 직원은 등록 된 이름이 없어야합니다. 그 대신 풀에만 이름이 있으며 작업자가 필요할 때 poolboy:checkout(mg_pool1)을 사용하는 근로자 중 한 명에게 pid()을 전달하도록 풀장에게 요청합니다.

코드를 수정하려면 gen_server:start_link({local, ?SERVER}, ?MODULE, Args, [])gen_server:start_link(?MODULE, Args, [])으로 변경하십시오. 그런 다음 이름이 등록되지 않습니다.

+0

답장을 보내 주셔서 감사합니다 .--), 좋은 하루 보내세요 !!!! –

+0

당신은 내가 하나의 probem을 해결할 수있는 시간이 있습니까? 같은 프로그램에서 :-) http://stackoverflow.com/questions/28315299/why-the-error-function-clause-about-erlang-mongodb- 얼랑 몽고 –