org.jgroups.protocols.UDP - no enviar el mensaje a null
-
21-08-2019 - |
Pregunta
[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
Esto está sucediendo durante las pruebas de carga en el servidor. Debería preocuparse por ello. Aparte de conseguir que el mensaje en el registro, todo parece funcionar bien.
Solución
En respuesta a Matt B, el "no enviar el mensaje a nulo" el mensaje es engañoso. El verdadero problema es la InterruptedIOException. Esto significa que alguien llama interrupción () en el subproceso que estaba enviando UDP. Lo más probable, la interrupción se genera dentro de JGroups. (A menos que empezar, y luego se detuvo el canal JGroups.)
Mirando el seguimiento de la pila, el I interrumpida / O era de un protocolo de descubrimiento. Se trataba de descubrir otros miembros del clúster. Por lo tanto, ningún mensaje suyo se perdió de esta excepción.
Nos tendríamos que saber más para realmente éste hacia fuera.
Otros consejos
Envío a "nulo" significa enviar a todo el clúster, frente a enviar un mensaje a un único miembro. Estoy de acuerdo, esto es un poco engañoso, así que cambié en esta versión posterior: IIRC "nulo" fue reemplazado a la "agrupación" o "grupo"
."nulo" aquí se refiere al destino: una dirección de destino nula significa enviar a todo el clúster
.El InterruptedIOException proviene del hilo remitente de ser detenido por JGroups; Esto sucede por ejemplo cuando ya tenemos suficientes respuestas en la fase de descubrimiento de volver, y así se detiene la tarea de envío (es decir., interrumpida).
Esto también se fijó en versiones posteriores de JGroups. Bela
¿Es posible que usted está consiguiendo un error porque va a enviar un mensaje a "nulo"?
ERROR - org.jgroups.protocols.UDP - no pudo enviar el mensaje a null
Por lo demás este es probablemente bastante difícil para cualquier otra persona para ayudarle a cabo con y sin códigos de ejemplo, la información de la red, la situación específica en la que se produce el problema, etc.