NPE in StrafePing

Description

StrafePing is detected, and then goes into nodeLostService almost immediately.

Environment

Linux CentOS 5

Acceptance / Success Criteria

None

Attachments

1

Lucidchart Diagrams

Activity

Show:

Antonio Russo January 18, 2013 at 3:57 AM

Fixed in master!

[master bb5a76d] Fix for NPE in StrafePing
3 files changed, 3 insertions, 3 deletions
MacBook-Pro-di-Antonio-Russo:opennms-icmp antonio$ git push
Password:
Counting objects: 56, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (15/15), done.
Writing objects: 100% (33/33), 2.00 KiB, done.
Total 33 (delta 7), reused 0 (delta 0)
To ssh://rssntn67@opennms.git.sourceforge.net/gitroot/opennms/opennms
d521c66..bb5a76d master -> master

Antonio Russo January 18, 2013 at 3:55 AM

The constructor for the icmp packet
had retry and packetsize inverted
so that the packet size was 0.
switched the value. Retry is 0
and packet size is default packet size.

Andris Bjornson January 17, 2013 at 7:27 PM

I am also experiencing this issue on 1.11.3. Any word on when we might see a fix?

Ron Roskens November 28, 2012 at 10:50 PM

The bug is in private method createRequestPacket() in org.opennms.netmgt.icmp.jni.JniPingRequest.java. Its attempting to create a new ICMPEchoPacket object but its passing two arguments and there are no matching constructors. You can see this because if you look at the poller.log.help attached to this issue, when StrafePingMonitor starts, it never logs a "Sending Ping Request" DEBUG message, while just a few lines up, the ICMP poller uses the same classes to successfully send out a ping request.

This was broken in commit 31659d08 which was a fix for .

If you run the junit tests in opennms-icmp/opennms-icmp-jni/ (sudo ../../compile.pl -t test -DrunPingTests=true), both of the parallel ping tests fail.

Not Rob Walker November 28, 2012 at 4:49 PM

See recent thread on the opennms-discuss email list with a subject line of "StrafePing goes nodeLostService almost immediately".

Here are some high points of what I saw in poller.log

2012-11-28 16:38:42,352 DEBUG [LegacyScheduler-Thread-17-of-30] StrafePingMonitor: failed to ping /10.57.188.138
2012-11-28 16:43:42,959 DEBUG [LegacyScheduler-Thread-3-of-30] StrafePingMonitor: failed to ping amadeus.silverspringnet.com/10.57.188.138
2012-11-28 16:48:43,574 DEBUG [LegacyScheduler-Thread-20-of-30] StrafePingMonitor: failed to ping amadeus.silverspringnet.com/10.57.188.138

Note that the first one is not like the others?

Also here's the first backtrace that I got.

*2012-11-28 16:38:42,352 DEBUG [LegacyScheduler-Thread-17-of-30] StrafePingMonitor: failed to ping /10.57.188.138
java.lang.NullPointerException
at org.opennms.netmgt.icmp.jni.JniPingRequest.getSequenceNumber(JniPingRequest.java:302)
at org.opennms.netmgt.icmp.ParallelPingResponseCallback.handleError(ParallelPingResponseCallback.java:67)
at org.opennms.netmgt.icmp.jni.JniPingRequest.send(JniPingRequest.java:260)
at org.opennms.netmgt.icmp.jni.JniIcmpMessenger.sendRequest(JniIcmpMessenger.java:95)
at org.opennms.netmgt.icmp.jni.JniIcmpMessenger.sendRequest(JniIcmpMessenger.java:46)
at org.opennms.protocols.rt.RequestTracker.sendRequest(RequestTracker.java:203)
at org.opennms.netmgt.icmp.jni.JniPinger.parallelPing(JniPinger.java:278)
at org.opennms.netmgt.icmp.jni6.Jni6Pinger.parallelPing(Jni6Pinger.java:297)

  • at org.opennms.netmgt.poller.monitors.StrafePingMonitor.poll(StrafePingMonitor.java:113)
    at org.opennms.netmgt.poller.pollables.LatencyStoringServiceMonitorAdaptor.poll(LatencyStoringServiceMonitorAdaptor.java: 104)
    at org.opennms.netmgt.poller.pollables.PollableServiceConfig.poll(PollableServiceConfig.java:112)
    at org.opennms.netmgt.poller.pollables.PollableService.poll(PollableService.java:178)
    at org.opennms.netmgt.poller.pollables.PollableElement.poll(PollableElement.java:292)
    at org.opennms.netmgt.poller.pollables.PollableContainer$5.run(PollableContainer.java:305)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
    at org.opennms.netmgt.poller.pollables.PollableElement.withTreeLock(PollableElement.java:263)
    at org.opennms.netmgt.poller.pollables.PollableElement.withTreeLock(PollableElement.java:249)
    at org.opennms.netmgt.poller.pollables.PollableElement.withTreeLock(PollableElement.java:227)
    at org.opennms.netmgt.poller.pollables.PollableContainer.poll(PollableContainer.java:312)
    at org.opennms.netmgt.poller.pollables.PollableInterface.poll(PollableInterface.java:205)
    at org.opennms.netmgt.poller.pollables.PollableContainer$5.run(PollableContainer.java:305)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
    at org.opennms.netmgt.poller.pollables.PollableElement.withTreeLock(PollableElement.java:263)
    at org.opennms.netmgt.poller.pollables.PollableElement.withTreeLock(PollableElement.java:249)
    at org.opennms.netmgt.poller.pollables.PollableElement.withTreeLock(PollableElement.java:227)
    at org.opennms.netmgt.poller.pollables.PollableContainer.poll(PollableContainer.java:312)
    at org.opennms.netmgt.poller.pollables.PollableNode$3.run(PollableNode.java:303)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
    at org.opennms.netmgt.poller.pollables.PollableElement.withTreeLock(PollableElement.java:263)
    at org.opennms.netmgt.poller.pollables.PollableElement.withTreeLock(PollableElement.java:249)
    at org.opennms.netmgt.poller.pollables.PollableElement.withTreeLock(PollableElement.java:227)
    at org.opennms.netmgt.poller.pollables.PollableNode.doPoll(PollableNode.java:306)
    at org.opennms.netmgt.poller.pollables.PollableElement.doPoll(PollableElement.java:183)
    at org.opennms.netmgt.poller.pollables.PollableService.doPoll(PollableService.java:211)
    at org.opennms.netmgt.poller.pollables.PollableService$PollRunner.run(PollableService.java:57)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
    at org.opennms.netmgt.poller.pollables.PollableElement.withTreeLock(PollableElement.java:263)
    at org.opennms.netmgt.poller.pollables.PollableElement.withTreeLock(PollableElement.java:249)
    at org.opennms.netmgt.poller.pollables.PollableService.doRun(PollableService.java:383)
    at org.opennms.netmgt.poller.pollables.PollableService.run(PollableService.java:364)
    at org.opennms.netmgt.scheduler.Schedule.run(Schedule.java:135)
    at org.opennms.netmgt.scheduler.Schedule$ScheduleEntry.run(Schedule.java:80)
    at org.opennms.netmgt.scheduler.LegacyScheduler$1.run(LegacyScheduler.java:203)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
    at org.opennms.core.concurrent.LogPreservingThreadFactory$3.run(LogPreservingThreadFactory.java:107)
    at java.lang.Thread.run(Thread.java:722)

Fixed

Details

Assignee

Reporter

Fix versions

Affects versions

Priority

PagerDuty

Created November 28, 2012 at 4:44 PM
Updated January 27, 2017 at 4:20 PM
Resolved January 18, 2013 at 3:57 AM