[SNMP4J] snmp.close() sometimes throws npe
Frank Fock
fock at agentpp.com
Wed Oct 14 00:13:04 CEST 2009
Hello Thanos,
I cannot reproduce this with the current version (1.10.2 snapshot).
Best regards,
Frank
Thanos Panousis wrote:
> Hello all,
>
> I would like to ask for some advice on why I keep getting a NPE when
> trying to close the snmp instance. In the code bellow, just after
> sending the request and getting back a result, I try to call
> snmp.close(). This sometimes throws the npe. I have "protected" it
> with a check for null, but it does not seem to work(it happens after
> the not null check?).
>
> Since snmp is never closed before, I don't see why snmp.close() should
> throw an npe. This code is run from within a thread that does this
> task and shares nothing with other threads. I have noticed that this
> npe happens more often when the number of threads is higher.
>
> protected String getValueFromBase(Sector sector) throws IOException{
> CommunityTarget tar = new CommunityTarget();//setting up tar
> Address addr = GenericAddress.parse("udp:" +sector.getIpAddress()
> + "/" + sector.getSnmpPort());
> tar.setCommunity(new
> OctetString(sector.getSnmpCommunity()));//Main.conf.getProperty("community",
> "public")));
> tar.setAddress(addr);
> tar.setRetries(Integer.parseInt(Main.conf.getProperty("retry", "4")));
> tar.setTimeout(Long.parseLong(Main.conf.getProperty("timeout", "400")));
> tar.setVersion(SnmpConstants.version1);
>
> TransportMapping trans = new DefaultUdpTransportMapping();
> //if these fail no fetches will happen
> trans.listen();
> Snmp snmp = new Snmp(trans);
> PDU tempPdu = new PDU();//creating PDU
> tempPdu.add(new VariableBinding(new OID(oid)));
> tempPdu.setType(PDU.GETNEXT);
> ResponseEvent response = snmp.send(tempPdu, tar);
> PDU responsePdu = response.getResponse();
>
> //sometimes the snmp instance throws nullPointer!why?
> if (snmp != null){
> snmp.close();
> trans.close();
> }
>
> //now parse the responsePdu and return result
> }
>
> The above code works but sometimes gives this kinf of errors
> (truncated for clarity):
>
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:205)
> at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
> at java.lang.Thread.run(Thread.java:619)
> Caused by: java.lang.NullPointerException
> at org.snmp4j.Snmp.close(Unknown Source)
> at wimossCollector.oidType.SectorOid.getValueFromBase(SectorOid.java:68)
>
>
> Thank you.
> Thanos Panousis.
> _______________________________________________
> SNMP4J mailing list
> SNMP4J at agentpp.org
> http://lists.agentpp.org/mailman/listinfo/snmp4j
--
AGENT++
http://www.agentpp.com
http://www.snmp4j.com
http://www.mibexplorer.com
http://www.mibdesigner.com
More information about the SNMP4J
mailing list