org.jgroups.protocols.UDP - fallito l'invio di un messaggio a null
-
21-08-2019 - |
Domanda
[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
Questo sta accadendo durante il test di carico sul server. Dovrei preoccuparsi. Oltre a ottenere quel messaggio nel registro, tutto sembra funzionare bene.
Soluzione
In risposta a Matt B, il "fallito invio del messaggio a null" messaggio è fuorviante. Il vero problema è l'InterruptedIOException. Questo significa che qualcuno ha chiamato interrupt () sul thread che è stato l'invio UDP. Molto probabilmente, l'interrupt viene generato all'interno di JGroups. (A meno che non hai iniziato, e poi si fermò il canale di JGroups.)
Guardando la traccia dello stack, l'ho interrotto / O ero da un protocollo Discovery. Stava cercando di scoprire altri membri del cluster. Quindi, nessun messaggio di tuo è stato perso da questa eccezione.
Dovremmo saperne di più per capire davvero questo fuori.
Altri suggerimenti
L'invio di "null" significa inviare a tutto il cluster, contro l'invio di un messaggio ad un singolo membro. Sono d'accordo, questo è un po 'fuorviante, così ho cambiato questo in versione successiva: IIRC "null" è stato sostituito a con "gruppo" o "gruppo"
."null" qui indicato la destinazione: un indirizzo di destinazione nulla significa inviare per l'intero cluster
.L'InterruptedIOException proviene dal filo mittente essere fermato da JGroups; Questo accade per esempio quando abbiamo già abbastanza risposte in fase di discovery di ritorno, e quindi l'operazione di invio fermo (es., interrotto).
Questo è stato anche risolto nelle versioni successive di JGroups. Bela
E 'possibile che si stanno ottenendo un errore perché si sta inviando un messaggio a "null"?
ERRORE - org.jgroups.protocols.UDP - non è riuscito l'invio di un messaggio a null
In caso contrario, questo è probabilmente piuttosto difficile per chiunque altro per aiutarvi con senza esempi di codice, le informazioni sulla rete, la situazione specifica in cui si verifica il problema, ecc.