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

Cela se produit pendant le test de charge sur le serveur. Devrais-je m'inquiéter à ce sujet. Mis à part d'avoir ce message dans le journal, tout semble fonctionner correctement.org.jgroups.protocols.UDP - échec de l'envoi du message à null

+0

mm, SO n'a clairement pas été conçu pour les empilements. Ça devient trop large pour mon écran :) – Jorn

+0

@Nik J'ai le même problème. Comment as-tu résolu le problème? –

+0

@Nik: J'ai exactement le même message d'erreur en ce moment. Qu'as-tu trouvé? – sixtyfootersdude

Répondre

3

En réponse à matt b, le message «échec d'envoi de message à null» est trompeur. Le vrai problème est l'InterruptedIOException. Cela signifie que quelqu'un a appelé interrupt() sur le thread qui envoyait UDP. Très probablement, l'interruption est générée dans JGroups. (Sauf si vous avez démarré, puis arrêté le canal JGroups.)

En regardant la trace de la pile, l'E/S interrompue provenait d'un protocole de découverte. Il essayait de découvrir d'autres membres du cluster. Ainsi, aucun de vos messages n'a été perdu de cette exception.

Nous devrions en savoir plus pour vraiment comprendre celui-ci.

0

Est-il possible que vous receviez une erreur parce que vous envoyez un message à "null"?

ERREUR - org.jgroups.protocols.UDP - n'a pas l'envoi de message à null

Sinon, cela est sans doute assez difficile pour quelqu'un d'autre pour vous aider avec sans exemples de code, des informations sur votre réseau, la situation spécifique où votre problème se produit, etc.

+0

Ce n'est pas ça. C'est une partie trompeuse de cette plainte dans JGroups, et c'est un faux-fuyant. J'ai déjà examiné des erreurs similaires. – Eddie

+0

J'aimerais que ce soit aussi simple. De la façon dont cela est configuré, vous rejoignez un canal et tous les messages envoyés à ce canal sont répliqués sur tous les nœuds qui ont rejoint. Aucune destination n'est spécifiée dans le code. Le: Causé par: java.io.InterruptedIOException: opération interrompue Mentionnez-moi qu'il y a un délai d'attente ou quelque chose. – Nik

1

L'envoi de "null" signifie l'envoi à l'ensemble du cluster, par opposition à l'envoi d'un message à un seul membre. Je suis d'accord, c'est un peu trompeur, donc j'ai changé cela dans la version ultérieure: IIRC "null" a été remplacé par "cluster" ou "groupe".

"null" désigne ici la destination: une adresse de destination nulle signifie l'envoi à l'ensemble du cluster.

L'InterruptedIOException provient du thread d'expéditeur arrêté par JGroups; cela arrive par exemple lorsque nous avons déjà suffisamment de réponses dans la phase de découverte pour retourner, et donc la tâche d'envoi est arrêtée (c'est-à-dire interrompue).

Cela a également été corrigé dans les versions ultérieures de JGroups. Bela

Questions connexes