Erlang Takeover falhando após Failover bem sucedida
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?
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.