Pergunta

Eu tenho um aplicativo distribuído mais de 2 nós. Quando eu parar () o primeiro nó do failover funciona perfeitamente, mas (às vezes?) Quando eu reiniciar o primeiro nó a aquisição falhar eo aplicativo trava desde retornos START_LINK já começou.

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

Meu aplicativo

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

stop( _State )->
    ok.

O meu supervisor:

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

Ambos os nós estão usando o mesmo arquivo SYS.CONFIG.

O que eu não compreender sobre este processo que o acima exposto não deve trabalho?

Foi útil?

Solução

Parece que o seu tronco problema supervisor servidor Twitter tentando iniciar um de seus filhos. Desde o relatório de erro reclama da criança com start_function

{twitter_server,start_link,[]}

E desde que você não está mostrando que o código, só posso adivinhar que ele está tentando registrar um nome para si mesmo, mas já existe um processo registrado com esse nome.

Mesmo mais adivinhar, a razão mostra um PID, o PID que tem o nome que tentou agarrar a nós mesmos:

{already_started,<2415.62.0>}

O Pid não tem um inteiro inicial diferente de zero, se fosse zero, isso significa que é um processo local. A partir do qual deduzo que você está tentando registrar um nome global, e você está conectado a outro nó onde já existe um processo globalmente registrado com esse nome.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top