2008-12-16 12 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 

Esto sucede durante la prueba de carga en el servidor. Debería preocuparme por eso Además de recibir ese mensaje en el registro, todo parece funcionar bien.org.jgroups.protocols.UDP - error al enviar el mensaje a cero

+0

mm, SO claramente no fue diseñado para stacktraces. Se está ensanchando demasiado para mi pantalla :) – Jorn

+0

@Nik Tengo el mismo problema. ¿Cómo resolviste el problema? –

+0

@Nik: Tengo exactamente el mismo mensaje de error en este momento. ¿Que encontraste? – sixtyfootersdude

Respuesta

3

En respuesta a matt b, el mensaje "mensaje de error enviado a nulo" es engañoso. El verdadero problema es la InterruptedIOException. Esto significa que alguien llamó a interrupt() en el subproceso que estaba enviando UDP. Lo más probable es que la interrupción se genere dentro de JGroups. (A menos que haya iniciado y luego haya detenido el canal de JGroups).

Al observar el seguimiento de la pila, la E/S interrumpida provenía de un protocolo de descubrimiento. Estaba tratando de descubrir otros miembros del clúster. Por lo tanto, ningún mensaje tuyo se perdió de esta Excepción.

Tendríamos que saber más para realmente resolver esto.

0

¿Es posible que esté recibiendo un mensaje de error porque está enviando un mensaje a "nulo"?

ERROR - org.jgroups.protocols.UDP - no el envío de mensajes a null

lo demás, 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.

+0

Eso no es todo. Esta es una parte engañosa de esta queja en JGroups, y es una pista falsa. He investigado errores similares antes. – Eddie

+0

Ojalá fuera así de simple. La forma en que esto se configura, se une a un canal y cualquier mensaje enviado a ese canal se replica a todos los nodos que se han unido. No hay un destino especificado en el código. The: Causado por: java.io.InterruptedIOException: operación interrumpida. Guíame para pensar que hay un tiempo de espera pasando o algo así. – Nik

1

Enviar a "nulo" significa enviar a todo el clúster, en lugar de enviar un mensaje a un único miembro. Estoy de acuerdo, esto es un poco engañoso, así que cambié esto en una versión posterior: IIRC "nulo" fue reemplazado por "clúster" o "grupo".

"nulo" aquí se refiere al destino: una dirección de destino nula significa enviar a todo el clúster.

La excepción de InterruptedIO proviene de que el subproceso del remitente está detenido por JGroups; esto sucede, por ejemplo, cuando ya tenemos suficientes respuestas en la fase de descubrimiento para regresar, y entonces la tarea de envío se detiene (es decir, se interrumpe).

Esto también se corrigió en las versiones posteriores de JGroups. Bela

Cuestiones relacionadas