문제

[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

이것은 서버에서로드 테스트 중에 발생합니다. 걱정해야합니다. 로그에서 그 메시지를 얻는 것 외에도 모든 것이 잘 작동하는 것 같습니다.

도움이 되었습니까?

해결책

Matt B에 대한 응답으로 "NULL에 메시지를 보내는 실패"메시지는 오해의 소지가 있습니다. 진정한 문제는 InterruptedioException입니다. 이것은 UDP를 보내는 스레드에서 인터럽트 ()라고 불리는 사람을 의미합니다. 아마도 인터럽트는 JGroups 내에서 생성 될 가능성이 높습니다. (시작한 다음 Jgroups 채널을 중단하지 않는 한.)

스택 추적을 살펴보면 중단 된 I/O는 발견 프로토콜에서 나왔습니다. 다른 클러스터 멤버를 발견하려고했습니다. 따라서이 예외에서 귀하의 메시지가 손실되지 않았습니다.

우리는 이것을 실제로 알아 내기 위해 더 많은 것을 알아야 할 것입니다.

다른 팁

"NULL"으로 전송한다는 것은 전체 클러스터로 전송하고 단일 멤버에게 메시지를 보내는 것을 의미합니다. 나는 이것이 약간 오해의 소지가 있다는 데 동의한다. 그래서 나는 이것을 이후 버전으로 변경했다 : IIRC "NULL"은 "클러스터"또는 "그룹"으로 대체되었다.

여기에서 대상을 언급 한 "NULL": NULL 대상 주소는 전체 클러스터로 보내는 것을 의미합니다.

InterruptedioException은 jgroups에 의해 중지 된 발신 스레드에서 발생합니다. 예를 들어 디스커버리 단계에서 이미 반환 할 수있는 충분한 응답이있을 때 발생하므로 보내기 작업이 중지됩니다 (예 : 중단).

이것은 또한 이후 버전의 JGroups에서 고정되었습니다. 벨라

"NULL"에 메시지를 보내기 때문에 오류가 발생할 수 있습니까?

error- org.jgroups.protocols.udp- null로 메시지를 보내는 데 실패했습니다

그렇지 않으면 이것은 코드 샘플, 네트워크에 대한 정보, 문제가 발생하는 특정 상황 등을 사용하지 않고 다른 사람이 도와주기가 매우 어려울 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top