¿Por qué Eclipse tarda tanto en conectarse a un proceso JUnitRunner cuando IPv6 está habilitado?

¿Por qué Eclipse tarda tanto en conectarse a un proceso JUnitRunner cuando IPv6 está habilitado?

Cuando IPv6 está habilitado en mi computadora, pasó medio minuto entre el inicio de un nuevo proceso JUnit y el árbol de prueba que aparece en la vista JUnit.

Cuando desactivo IPv6, las pruebas aparecen inmediatamente.

Lo que veo es que el proceso se crea y luego se cuelga ca. 30 años en SocketImpl.connect(). Con netstat, puedo ver una línea como esta:

tcp6       0      1 fe80::xxxx:xxxx:x:51019 ::1:48469               SYN_SENT

¿Por qué sucede eso?

Respuesta1

Una posibilidad:

El proceso del ejecutor escucha solo en 127.0.0.1, la dirección de bucle invertido IPv4, pero Eclipse está intentando conectarse localhost, que puede ser 127.0.0.1o ::1, siendo este último el bucle invertido IPv6. En la mayoría de los sistemas operativos, IPv6 está habilitado; será el preferido, lo que hará que Eclipse pruebe IPv6 ::1primero.

Dado que JUnitRunner no escucha ninguna dirección IPv6, el sistema operativo debe rechazar los intentos de conexión con un TCP RST (omayyybeICMP "Puerto inalcanzable" si tiene un firewall adecuado). Sin embargo, probablemente tenga una configuración de firewall que descarte silenciosamente dichos intentos, lo que significa que el cliente (Eclipse) estará esperando una respuesta que nunca se envía.

Primero verifique la configuración de su firewall ( ip6tables): no hay ninguna razón para que bloquee las conexiones de bucle invertido de ninguna manera. Pruebe con el firewall desactivado temporalmente. Si nada ayuda, verifique si Eclipse se puede configurar para usar 127.0.0.1, o si JUnit se puede configurar para escuchar tanto en IPv6 como en IPv4.

información relacionada