[SNMP4J] TableUtils - GetBulk responses - Possible race condition

Frank Fock fock at agentpp.com
Tue Mar 18 22:20:49 CET 2008


Hi Damian,

Sorry, I introduced a new bug here. To fix that one
please apply the following patch:

Index: Snmp.java
===================================================================
--- Snmp.java	(revision 400)
+++ Snmp.java	(working copy)
@@ -1117,15 +1117,17 @@
        synchronized (pendingRequests) {
          request = (PendingRequest) pendingRequests.get(handle);
          if (request != null) {
-          request.responseReceived();
-        }
-        else if (request.isResponseReceived()) {
-          pendingRequests.remove(handle);
-          request = null;
-          if (logger.isInfoEnabled()) {
-            logger.info("Received second response for request with 
handle "+
-                        handle);
+          if (request.isResponseReceived()) {
+            pendingRequests.remove(handle);
+            request = null;
+            if (logger.isInfoEnabled()) {
+              logger.info("Received second response for request with 
handle "+
+                          handle);
+            }
            }
+          else {
+            request.responseReceived();
+          }
          }
        }
        if (request == null) {

Best regards,
Frank

Damian wrote:
> Hi Frank,
> 
> I tried SNMP4J_20080318_033301_snapshot.zip to try to validate the fix 
> and I am getting the following exception now:
> 
> java.lang.NullPointerException
>     at org.snmp4j.Snmp.processPdu(Snmp.java:1122)
>     at 
> org.snmp4j.MessageDispatcherImpl.fireProcessPdu(MessageDispatcherImpl.java:606) 
> 
>     at 
> org.snmp4j.MessageDispatcherImpl.dispatchMessage(MessageDispatcherImpl.java:287) 
> 
>     at 
> org.snmp4j.MessageDispatcherImpl.processMessage(MessageDispatcherImpl.java:347) 
> 
>     at 
> org.snmp4j.MessageDispatcherImpl.processMessage(MessageDispatcherImpl.java:309) 
> 
>     at 
> org.snmp4j.transport.AbstractTransportMapping.fireProcessMessage(AbstractTransportMapping.java:83) 
> 
>     at 
> org.snmp4j.transport.DefaultUdpTransportMapping$ListenThread.run(DefaultUdpTransportMapping.java:328) 
> 
>     at java.lang.Thread.run(Thread.java:619)
>     at 
> org.snmp4j.util.DefaultThreadFactory$WorkerThread.run(DefaultThreadFactory.java:65) 
> 
> 
> Let me know if you need any additional info.
> 
> Thanks,
> Damian

-- 
AGENT++
http://www.agentpp.com
http://www.mibexplorer.com
http://www.mibdesigner.com



More information about the SNMP4J mailing list