2008-12-16 11 views
5
[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 

Dzieje się to podczas testowania obciążenia na serwerze. Czy powinienem się tym przejmować? Oprócz otrzymania tej wiadomości w dzienniku wszystko wydaje się działać poprawnie.org.jgroups.protocols.UDP - komunikat o błędzie nie został wysłany pod numer

+0

mm, Z pewnością nie był przeznaczony do stacktraces. Na mój ekran robi się zbyt szeroki :) – Jorn

+0

@Nik Mam ten sam problem. Jak rozwiązałeś problem? –

+0

@Nik: Mam dokładnie ten sam komunikat o błędzie. Co znalazłeś? – sixtyfootersdude

Odpowiedz

3

W odpowiedzi na matę b komunikat "wiadomość o nieudanym wysyłaniu na adres zerowy" jest mylący. Prawdziwym problemem jest wyjątek InterruptedIOException. Oznacza to, że ktoś zwany interrupt() na wątku, który wysyłał UDP. Najprawdopodobniej przerwanie jest generowane w JGroups. (Jeśli nie uruchomiłeś, a następnie zatrzymałeś kanał JGroups.)

Patrząc na ślad stosu, przerwane operacje we/wy pochodziły z protokołu Discovery. Próbowano odkryć innych członków klastra. Tak więc żadne wiadomości nie zostały utracone z tego wyjątku.

Musielibyśmy wiedzieć więcej, aby naprawdę wymyślić to.

0

Czy jest możliwe, że pojawia się błąd, ponieważ wysyłasz wiadomość "null"?

ERROR - org.jgroups.protocols.UDP - Wysyłanie wiadomości nie powiodło się na null

W przeciwnym razie jest to chyba dość trudne dla nikogo innego, aby pomóc z próbek bez kodów, informacji o sieci, konkretna sytuacja, w której wystąpił problem, itp.

+0

To nie to. To jest myląca część tej skargi w JGroups i jest to czerwony śledź. Już wcześniej analizowałem podobne błędy. – Eddie

+0

Chciałbym, żeby to było takie proste. W ten sposób łączysz się z kanałem, a wszystkie wiadomości wysłane do tego kanału są replikowane do wszystkich węzłów, do których dołączyłeś. W kodzie nie określono miejsca docelowego. Przyczyna: Przyczyna: java.io.InterruptedIOException: operacja została przerwana. Prowadź mnie, aby sądzić, że nastąpiło przekroczenie limitu czasu lub coś takiego. – Nik

1

Wysłanie na "null" oznacza wysłanie do całego klastra, zamiast wysłania wiadomości do pojedynczego członka. Zgadzam się, to jest trochę mylące, więc zmieniłem to w późniejszej wersji: IIRC "null" został zamieniony na "cluster" lub "group".

"null" tutaj określone miejsce docelowe: pusty adres docelowy oznacza wysłanie do całego klastra.

Wyjątek InterruptedIOException pochodzi z wątku nadawcy zatrzymanego przez JGroups; dzieje się tak na przykład wtedy, gdy mamy już wystarczającą liczbę odpowiedzi w fazie wykrywania, aby powrócić, a więc zadanie wysyłania zostało zatrzymane (tj. przerwane).

Zostało to również naprawione w późniejszych wersjach grup JGroups. Bela

Powiązane problemy