2009-05-20 3 views
1

두 개의 노드에 분산 된 응용 프로그램이 있습니다. 첫 번째 노드를 중단()하면 장애 조치가 완벽하게 작동하지만 첫 번째 노드를 다시 시작할 때 인계가 실패하고 start_link 반환이 이미 시작된 이후 응용 프로그램이 충돌합니다.장애 조치가 성공적으로 수행 된 후에 장애가 발생했습니다.

SUPERVISOR REPORT <0.60.0>         2009-05-20 12:12:01 
=============================================================================== 
Reporting supervisor       {local,twitter_server_supervisor} 

Child process 
    errorContext              start_error 
    reason           {already_started,<2415.62.0>} 
    pid                undefined 
    name                 tag1 
    start_function        {twitter_server,start_link,[]} 
    restart_type              permanent 
    shutdown                10000 
    child_type               worker 

ok 

내 애플

start(_Type, Args)-> 
    twitter_server_supervisor:start_link(Args). 

stop(_State)-> 
    ok. 

내 관리자 :

start_link(Args) -> 
    supervisor:start_link({local,?MODULE}, ?MODULE, Args).  

두 노드가 같은 SYS.CONFIG 파일을 사용하고 있습니다.

위 프로세스가 작동하지 않아야하는이 프로세스에 대해 이해할 수없는 것은 무엇입니까?

+1

형식이 올바른 sasl 감독자 보고서가있는 곳에서 물어볼 수 있습니까? 그것은 더 많은 다음 읽을 수 다음 기본값입니다. 링크 또는 링크를 공유 할 수 있습니까? – gleber

+1

erl_12B가있는 Windows 상자에 rb : show (N)과 함께 표시되는 표준 결과입니다. rpc를 통해 전화를 걸면 출력에 노드 이름이 넘쳐 흐릅니다. 너 뭐야? –

답변

2

트위터 서버 관리자가 자녀 중 하나를 시작하려고 할 때 문제가 발생한 것으로 보입니다. 오류 보고서는 start_function와 아이에 대한 불만 때문에

{twitter_server,start_link,[]} 

그리고 당신이 그 코드를 보여주는되지 않기 때문에, 나는 단지 그 자체의 이름을 등록하려 시도하지만 등록 된 프로세스가 이미 있다는 것을 추측 할 수 이름.

더욱 추측, 그 이유는 PID를, 우리가 우리 자신을 위해 잡아하려고했던 이름이 PID를 보여줍니다 제로라면, 비 - 제로 초기 정수가있다

{already_started,<2415.62.0>} 

는 PID 그것은 그것이 로컬 프로세스임을 의미합니다. 여기서 내가 글로벌 이름을 등록하려고한다는 것을 추론하고, 이미 그 이름으로 전역 적으로 등록 된 프로세스가있는 다른 노드에 연결되어 있습니다.