org.jgroups.protocols.UDP - не удалось отправить сообщение на ноль - PullRequest
5 голосов
/ 17 декабря 2008
[hannel,192.168.0.46:40014] 15:08:03,642 - ERROR - org.jgroups.protocols.UDP - failed sending message to null (61 bytes)
java.lang.Exception: dest=/225.1.2.46:30446 (64 bytes)
    at org.jgroups.protocols.UDP._send(UDP.java:333)
    at org.jgroups.protocols.UDP.sendToAllMembers(UDP.java:283)
    at org.jgroups.protocols.TP.doSend(TP.java:1327)
    at org.jgroups.protocols.TP.send(TP.java:1317)
    at org.jgroups.protocols.TP.down(TP.java:1038)
    at org.jgroups.protocols.PING.sendMcastDiscoveryRequest(PING.java:220)
    at org.jgroups.protocols.PING.sendGetMembersRequest(PING.java:214)
    at org.jgroups.protocols.Discovery$PingSenderTask$1.run(Discovery.java:385)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:417)
    at java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:280)
    at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:135)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:65)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:142)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:166)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
    at java.lang.Thread.run(Thread.java:595)
Caused by: java.io.InterruptedIOException: operation interrupted
    at java.net.PlainDatagramSocketImpl.send(Native Method)
    at java.net.DatagramSocket.send(DatagramSocket.java:612)
    at org.jgroups.protocols.UDP._send(UDP.java:324)
    ... 16 more

Это происходит во время нагрузочного тестирования на сервере. Должен ли я беспокоиться об этом. Если не считать того сообщения в журнале, кажется, что все работает хорошо.

Ответы [ 3 ]

3 голосов
/ 22 января 2009

В ответ на matt b сообщение «Не удалось отправить сообщение на нуль» вводит в заблуждение Истинной проблемой является InterruptedIOException. Это означает, что кто-то вызвал interrupt () в потоке, который отправлял UDP. Скорее всего, прерывание генерируется внутри JGroups. (Если вы не запустили, а затем не остановили канал JGroups.)

Глядя на трассировку стека, прерванный ввод-вывод был из протокола обнаружения. Он пытался обнаружить других членов кластера. Таким образом, ваше сообщение не было потеряно из этого исключения.

Нам нужно знать больше, чтобы понять это.

1 голос
/ 13 августа 2011

Отправка на «ноль» означает отправку всему кластеру вместо отправки сообщения одному участнику. Я согласен, это немного вводит в заблуждение, поэтому я изменил это в более поздней версии: IIRC "null" был заменен на "cluster" или "group".

«null» здесь относится к получателю: нулевой адрес получателя означает отправку всему кластеру.

Исключение InterruptedIOException происходит из-за того, что поток отправителя останавливается JGroups; это происходит, например, когда у нас уже достаточно ответов на этапе обнаружения для возврата, и поэтому задача отправки останавливается (т. е. прерывается).

Это также было исправлено в более поздних версиях JGroups. Бел

0 голосов
/ 17 декабря 2008

Возможно ли, что вы получаете сообщение об ошибке, потому что отправляете сообщение "null"?

ОШИБКА - org.jgroups.protocols.UDP - не удалось отправить сообщение на ноль

В противном случае, возможно, кому-то еще будет довольно сложно помочь без примеров кода, информации о вашей сети, конкретной ситуации, в которой возникла ваша проблема, и т. Д.

...