У кого-нибудь есть проблемы с NIO / IPV6 и отключением от сети? - PullRequest
1 голос
/ 09 апреля 2019

У меня есть тестовый пример, который работает в этих ситуациях

  1. ipv4, онлайн, nio (-Djava.net.preferIPv4Stack = true)
  2. ipv4, автономный режим (отключить Wi-Fi), nio (-Djava.net.preferIPv4Stack = true)
  3. ipv6, онлайн, nio

ТОГДА, последний ipv6, офлайн (без wifi-подключения), буквально никогда не подключается и просто зависает до истечения времени ожидания. первый вызов, поэтому SocketChannel.connect возвращает false, что нормально, а затем он инициирует асинхронное соединение с SelectableChannel.register. К сожалению, он висит где-то в коде jdk ..... хммммм, я думаю, я могу сделать дамп стека дальше и добавить дополнительную информацию.

Кто-нибудь видел эту проблему раньше? JDK 9,0,4

(Полагаю, мне также нужно потянуть за вилку и перейти на jdk10, что, надеюсь, будет легко - скрестив пальцы).

ОБНОВЛЕНИЕ 1: Ok Profiler не помог, так как он nio, он асинхронный, что означает, что он находится в ожидании селектора (ожидаемый и ожидаемый запуск - все), а другой поток ожидает в будущем, ожидая его разрешения, пока селектор не сработает и завершает соединение, которое никогда не происходит (только в автономном режиме). Я думаю, я обновлю JDK и протестирую это тоже.

ОБНОВЛЕНИЕ 2: Обновлен до jdk12 и те же результаты.

Есть ли у кого-нибудь еще тесты на локальном хосте, где сервер связывается с портом 0, а клиент подключается к порту, который в итоге связывается там, где клиент находится в nio И использует ipv6? Очень неприятно, когда набор тестов не работает в автономном режиме, а работает только онлайн, поэтому я пытаюсь это исправить.

спасибо, Декан

...