![Por que demora tanto para o Eclipse se conectar a um processo JUnitRunner quando o IPv6 está habilitado?](https://rvso.com/image/1314341/Por%20que%20demora%20tanto%20para%20o%20Eclipse%20se%20conectar%20a%20um%20processo%20JUnitRunner%20quando%20o%20IPv6%20est%C3%A1%20habilitado%3F.png)
Quando o IPv6 está habilitado em meu computador, meio minuto se passou entre o início de um novo processo JUnit e a árvore de teste aparecendo na visualização JUnit.
Quando desativo o IPv6, os testes aparecem imediatamente.
O que vejo é que o processo é criado e depois trava ca. 30 em SocketImpl.connect()
. Com netstat
, posso ver uma linha como esta:
tcp6 0 1 fe80::xxxx:xxxx:x:51019 ::1:48469 SYN_SENT
Por que isso acontece?
Responder1
Uma possibilidade:
O processo do executor está escutando apenas 127.0.0.1
, o endereço de loopback IPv4, mas o Eclipse está tentando se conectar localhost
- que pode ser 127.0.0.1
ou ::1
, sendo o último loopback IPv6. Na maioria dos sistemas operacionais, o IPv6 está habilitado, será preferido, fazendo com que o Eclipse tente ::1
primeiro o IPv6.
Como o JUnitRunner não está escutando nenhum endereço IPv6, o sistema operacional deve rejeitar tentativas de conexão com um TCP RST (outalvezICMP "Porta inacessível" se estiver devidamente protegido por firewall). No entanto, você provavelmente tem uma configuração de firewall que descarta silenciosamente essas tentativas, o que significa que o cliente (Eclipse) estará aguardando uma resposta que nunca será enviada.
Primeiro verifique a configuração do seu firewall ( ip6tables
) – não há razão para bloquear conexões de loopback de forma alguma. Teste com o firewall temporariamente desativado. Se nada ajudar, verifique se o Eclipse pode ser configurado para usar 127.0.0.1
ou se o JUnit pode ser configurado para escutar em IPv6 e IPv4.