[SNMP4J] Null Pointer Exception in DefaultTcpTransportMapping.close()

Frank Fock fock at agentpp.com
Thu Aug 17 08:27:59 CEST 2006


I expect the fix to be available later today.
I will post it here when it has been uploaded.

Best regards,
Frank

Prusi, Jesse R wrote:
> Thanks for the response Frank.  Do you have an estimate on when you will
> have the fix tested?  Can you please provide a patch when you have it
> ready so I won't have to wait for the next release?
> 
> Thanks,
> Jesse
> 
> -----Original Message-----
> From: Frank Fock [mailto:fock at agentpp.com] 
> Sent: Wednesday, August 16, 2006 12:20 AM
> To: Prusi, Jesse R
> Cc: snmp4j at agentpp.org
> Subject: Re: [SNMP4J] Null Pointer Exception in
> DefaultTcpTransportMapping.close()
> 
> Hi Jesse,
> 
> I am working on this. My current approach synchronizes
> the access to the "server" member. I have to test if
> it works now...
> 
> Best regards,
> Frank
> 
> Prusi, Jesse R wrote:
>> Upon further investigation this fix did not solve the problem.  The
>> sockets are still not getting closed.  Any ideas?
>>
>> Thanks,
>> Jesse
>>
>> -----Original Message-----
>> From: snmp4j-bounces at agentpp.org [mailto:snmp4j-bounces at agentpp.org]
> On
>> Behalf Of Prusi, Jesse R
>> Sent: Tuesday, August 15, 2006 7:27 AM
>> To: snmp4j at agentpp.org
>> Subject: RE: [SNMP4J] Null Pointer Exception in
>> DefaultTcpTransportMapping.close()
>>
>> I updated the close() method to catch the NPE when join() is called
> and
>> the server thread has already been set to null because run() exited.
>> This allows the sockets to be closed so the ports are freed up and it
>> seems to fix the problem.  Anyone else have a better solution?
>>
>>
>>   /**
>>    * Closes all open sockets and stops the internal server thread that
>>    * processes messages.
>>    */
>>   public synchronized void close() {
>>     if (server != null) {
>>       server.close();
>>       try {
>>         server.join();
>>       }
>>       catch (NullPointerException npe) {
>>         logger.warn(npe);
>>       }
>>       catch (InterruptedException ex) {
>>         logger.warn(ex);
>>       }
>>       server = null;
>>       for (Iterator it = sockets.values().iterator(); it.hasNext(); )
> {
>>         SocketEntry entry = (SocketEntry)it.next();
>>         try {
>>           synchronized (entry) {
>>              entry.getSocket().close();
>>           }
>>           logger.debug("Socket to "+entry.getPeerAddress()+" closed");
>>         }
>>         catch (IOException iox) {
>>           // ingore
>>           logger.debug(iox);
>>         }
>>       }
>>       if (socketCleaner != null) {
>>         socketCleaner.cancel();
>>       }
>>       socketCleaner = null;
>>     }
>>   }
>>
>> Thanks,
>> Jesse
>>
>>
>>
>> -----Original Message-----
>> From: snmp4j-bounces at agentpp.org [mailto:snmp4j-bounces at agentpp.org]
> On
>> Behalf Of Prusi, Jesse R
>> Sent: Monday, August 14, 2006 6:44 PM
>> To: snmp4j at agentpp.org
>> Subject: [SNMP4J] Null Pointer Exception in
>> DefaultTcpTransportMapping.close()
>>
>> Hello,
>>
>> I'm using SNMP4J 1.7.3 on a Windows XP machine.
>>
>> I find a get a Null Pointer Exception when snmp.close().  Here is my
>> sample code:
>>
>> public class SnmpTest {
>>
>> 	public static void main(String[] args) {
>> 		try{
>> 			DefaultTcpTransportMapping myTransport = new
>> DefaultTcpTransportMapping(
>> 					new
>> TcpAddress(InetAddress.getLocalHost(),
>> 							10163));
>> 			myTransport.setMaxInboundMessageSize(1400);
>> 			myTransport.setConnectionTimeout(1000);
>> 			
>> 			Snmp snmp = new Snmp(myTransport);
>> 			OctetString localEngineId = new
>> OctetString(MPv3.createLocalEngineID());
>> 			USM usm = new
>> USM(SecurityProtocols.getInstance(), localEngineId, 0);
>> 	
>> SecurityModels.getInstance().addSecurityModel(usm);
>> 			snmp.listen();
>> 			System.out.println("Listening on port 10163");
>> 			for(int i=0; i < 10000; i++){
>> 				System.out.println("spinning " + i);
>> 			}
>> 			snmp.close();
>> 			System.out.println("Closed Snmp Session");
>> 		}
>> 		catch(Exception e){
>> 			e.printStackTrace();
>> 		}
>> 	}
>> }
>>
>> I get the following stack trace:
>>
>> java.lang.NullPointerException
>> 	at
>>
> org.snmp4j.transport.DefaultTcpTransportMapping.close(DefaultTcpTranspor
>> tMapping.java:186)
>> 	at org.snmp4j.Snmp.close(Snmp.java:429)
>> 	at SnmpTest.main(SnmpTest.java:31)
>>
>> The NPE does not occur if I comment out the spinning for loop.  I
>> thought this might have something to do with the timeout setting of
> the
>> TCP transport mapping, but I still get the error after increasing the
>> timeout to 10000.  Any ideas why this is occurring?  Am I using the
> TCP
>> transport mapping incorrectly?
>>
>> Thanks,  
>>
>> Jesse Prusi
>>
>> _______________________________________________
>> SNMP4J mailing list
>> SNMP4J at agentpp.org
>> http://lists.agentpp.org/mailman/listinfo/snmp4j
>>
>>
>> _______________________________________________
>> SNMP4J mailing list
>> SNMP4J at agentpp.org
>> http://lists.agentpp.org/mailman/listinfo/snmp4j
>>
>>
>> _______________________________________________
>> SNMP4J mailing list
>> SNMP4J at agentpp.org
>> http://lists.agentpp.org/mailman/listinfo/snmp4j
> 

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




More information about the SNMP4J mailing list