[SNMP4J] Socket closed exception

Prema Upot prema.upot at optelian.com
Fri Jul 11 16:35:26 CEST 2014


Hi Frank,

We do call snmp.listen() with every request we send. This ensures ListenThread is recreated, but I see that the when the socket closed exception happens and listener was reset to null, the socket instance remained as is and was not set to null.
Hence I think ensureSocket() will never recreate and rebind the DatagramSocket since old socket instance remains in DefaultUdpTransportMapping ?

Thanks,
Prema

-----Original Message-----
From: Frank Fock [mailto:fock at agentpp.com] 
Sent: Thursday, July 10, 2014 4:53 PM
To: Prema Upot; snmp4j at agentpp.org
Subject: Re: [SNMP4J] Socket closed exception

Hi Prema,

Simply call "listen()" on the TransportMapping to start it again.
Best regards,
Frank


Am 10.07.2014 22:00, schrieb Prema Upot:
> Hi Frank,
>
> I was going to SNMP4J logs and I noticed that ListenThread of DefaultUdpTransportMapping stopped because socket closed for some reason.
>
> 014-07-09 09:52:28,303 ERROR  [ ransportMapping_172.21.0.169/0 ] Socket for transport mapping org.snmp4j.transport.DefaultUdpTransportMapping$ListenThread at 17add1b error: socket closed
> java.net.SocketException: socket closed
> 	at java.net.PlainDatagramSocketImpl.receive0(Native Method)
> 	at java.net.PlainDatagramSocketImpl.receive(Unknown Source)
> 	at java.net.DatagramSocket.receive(Unknown Source)
> 	at org.snmp4j.transport.DefaultUdpTransportMapping$ListenThread.run(DefaultUdpTransportMapping.java:339)
> 	at java.lang.Thread.run(Unknown Source)
> 2014-07-09 09:52:28,303 DEBUG  [ ransportMapping_172.21.0.169/0 ] Worker task stopped:org.snmp4j.transport.DefaultUdpTransportMapping$ListenThread
>
>  From this point onwards, I see that every request has socket closed error.
>
> We have modelled our main SNMP interface based on the SNMPRequest.java class included with SNMP4j and we are creating a new instance of this class every time. But there is only one instance of SNMP class that is statically created within this SnmpRequest. This was done based on your suggestion ( that was way back in 2012 : )  to fix snmp timeout problem (snmp response received from network but snmp4j stack reported timeout). Hence in the end we have only one instance of DefaultUdpTransportMapping and with the ListenThread closed, we will always be in error mode until we restart the server.
> Is there anything we can do to recreate the ListenThread? I have no clue why the socket closed in the first instance. We have been running this code for a few years now and this problem has surfaced only quite recently.
>
> Thanks,
> Prema
>
> -----Original Message-----
> From: SNMP4J [mailto:snmp4j-bounces at agentpp.org] On Behalf Of Frank Fock
> Sent: Wednesday, July 09, 2014 2:22 PM
> To: snmp4j at agentpp.org
> Subject: Re: [SNMP4J] Socket closed exception
>
> Hi Prema,
>
> Most likely, someone is calling Snmp.close() or the close() method of the underlying transport mapping while other code is still using the same Snmp session.
> Another option would be the operating system or JRE closing the socket itself for some reason (unlikely).
>
> Best regards,
> Frank
>
> Am 09.07.2014 20:12, schrieb Prema Upot:
>> Hi,
>>
>> We use SNMP4j 1.11 version. Recently we have been seeing a lot of socket closed exceptions while sending SNMP get/set messages. We have been using this version of SNMP4J for a long time in our application (and we have not modified the way we use the SNMP4J API at all) and we have never seen this before. This happens when we try to send a set of SNMP requests within a short period of time to different hosts (like periodic SNMP polling of a group of devices). Any ideas why this is happening ? Once this happens the only way to recover from this state is to restart my application.
>>
>> This is a sample exception that I see in my log file.
>>
>> [09 Jul 2014 13:44:20:653]  [ polling-11                ] SYS_ERR: java.net.SocketException: Socket is closed
>> [09 Jul 2014 13:44:20:653]  [ polling-11                ] SYS_ERR:                at java.net.DatagramSocket.send(Unknown Source)
>> [09 Jul 2014 13:44:20:653]  [ polling-11                ] SYS_ERR:                at org.snmp4j.transport.DefaultUdpTransportMapping.sendMessage(DefaultUdpTransportMapping.java:115)
>> [09 Jul 2014 13:44:20:653]  [ polling-11                ] SYS_ERR:                at org.snmp4j.MessageDispatcherImpl.sendMessage(MessageDispatcherImpl.java:195)
>> [09 Jul 2014 13:44:20:653]  [ polling-11                ] SYS_ERR:                at org.snmp4j.MessageDispatcherImpl.sendPdu(MessageDispatcherImpl.java:462)
>> [09 Jul 2014 13:44:20:653]  [ polling-11                ] SYS_ERR:                at org.snmp4j.Snmp.sendMessage(Snmp.java:1078)
>> [09 Jul 2014 13:44:20:653]  [ polling-11                ] SYS_ERR:                at org.snmp4j.Snmp.send(Snmp.java:891)
>> [09 Jul 2014 13:44:20:653]  [ polling-11                ] SYS_ERR:                at org.snmp4j.Snmp.send(Snmp.java:871)
>> [09 Jul 2014 13:44:20:653]  [ polling-11                ] SYS_ERR:                at org.snmp4j.Snmp.send(Snmp.java:836)
>> [09 Jul 2014 13:44:20:653]  [ polling-11                ] SYS_ERR:                at com.optelian.common.SnmpRequest.send(SnmpRequest.java:396)
>> [09 Jul 2014 13:44:20:653]  [ polling-11                ] SYS_ERR:                at com.optelian.common.SnmpRequest.send(SnmpRequest.java:370)
>> [09 Jul 2014 13:44:20:653]  [ polling-11                ] SYS_ERR:                at com.optelian.common.OMSSnmp4JDeviceInterface.readFields(OMSSnmp4JDeviceInterface.java:353)
>> [09 Jul 2014 13:44:20:653]  [ polling-11                ] SYS_ERR:                at com.optelian.common.OMSDeviceManager.readFields(OMSDeviceManager.java:74)
>> [09 Jul 2014 13:44:20:653]  [ polling-11                ] SYS_ERR:                at com.optelian.topology.server.util.ShelfInterface.readProperties(ShelfInterface.java:220)
>> [09 Jul 2014 13:44:20:653]  [ polling-11                ] SYS_ERR:                at com.optelian.topology.server.util.ShelfInterface.readReleaseString(ShelfInterface.java:170)
>> [09 Jul 2014 13:44:20:653]  [ polling-11                ] SYS_ERR:                at com.optelian.topology.server.discovery.ShelfPolling.pollOMSNode(ShelfPolling.java:181)
>> [09 Jul 2014 13:44:20:653]  [ polling-11                ] SYS_ERR:                at com.optelian.topology.server.discovery.ShelfPolling.run(ShelfPolling.java:63)
>> [09 Jul 2014 13:44:20:653]  [ polling-11                ] SYS_ERR:                at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
>> [09 Jul 2014 13:44:20:653]  [ polling-11                ] SYS_ERR:                at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
>> [09 Jul 2014 13:44:20:653]  [ polling-11                ] SYS_ERR:                at java.lang.Thread.run(Unknown Source)
>>
>> Any help in debugging this problem is much appreciated.
>>
>> Thanks,
>> Prema
>>
>> _______________________________________________
>> SNMP4J mailing list
>> SNMP4J at agentpp.org
>> https://oosnmp.net/mailman/listinfo/snmp4j
> --
> ---
> AGENT++
> Maximilian-Kolbe-Str. 10
> 73257 Koengen, Germany
> https://agentpp.com
> Phone: +49 7024 8688230
> Fax:   +49 7024 8688231
>
> _______________________________________________
> SNMP4J mailing list
> SNMP4J at agentpp.org
> https://oosnmp.net/mailman/listinfo/snmp4j

-- 
---
AGENT++
Maximilian-Kolbe-Str. 10
73257 Koengen, Germany
https://agentpp.com
Phone: +49 7024 8688230
Fax:   +49 7024 8688231



More information about the SNMP4J mailing list