I am a little confused by this change.  

We have run into this issue, with a sporadic socket closed exception, the cause 
of which we have not been able to identify.  What we are seeing is that the new 
behavior results in a busy-loop, since we go right back to a receive that is 
guaranteed to fail.  

This strikes me as a case where we need to either remediate the socket 
directly, or cancel the listener.  What am I missing?

Regards,
Kelly.


On 12.07.2011 14:02, Fock, Frank wrote:
> Hi Gary,
>
> Your right, the current behavior is too strict.
> I have changed it as follows for the 2.0 release
> (will also change it for the 1.x branch too):
>
>          catch (SocketException soex) {
>            if (!stop) {
>              logger.error("Socket for transport mapping " + toString() +
>                           " error: " + soex.getMessage(), soex);
>            }
>            if (SNMP4JSettings.isFowardRuntimeExceptions()) {
>              stop = true;
>              throw new RuntimeException(soex);
>            }
>          }
>
> Best regards,
> Frank
>
> On 11.07.2011 16:29, Smith, Gary wrote:
> > Folks
> >
> > I'm using SNMP4j 1.11.3 and get occasional socket exceptions from certain 
> > devices, but not all.
> >
> > Current DefaultUdpTransportMapping.ListenThread.run() behaviour is to stop 
> > listening if any SocketException is caught (line 394).
> >
> > This kills the listener thread for every device, not  just the offending 
> > device.
> >
> > I have a badly behaved/config'ed device that is provoking an exception:
> >
> > Socket for transport mapping 
> > org.snmp4j.transport.DefaultUdpTransportMapping$ListenThread at 1264c84 
> > error: socket closed
> > java.net.SocketException: socket closed
> >         at java.net.PlainDatagramSocketImpl.receive0(Native Method)
> >         at 
> > java.net.PlainDatagramSocketImpl.receive(PlainDatagramSocketImpl.java:136)
> >         at java.net.DatagramSocket.receive(DatagramSocket.java:712)
> >         at 
> > org.snmp4j.transport.DefaultUdpTransportMapping$ListenThread.run(Unknown 
> > Source)
> >         at java.lang.Thread.run(Thread.java:619)
> >
> >
> > This effectively kills the ListenThread for all my polled devices - by 
> > removing the "stop = true;" line above, my application becomes resilient 
> > (although obviously I have some > config problems).
> >
> >
> > Thanks
> Gary
> > _______________________________________________
> > SNMP4J mailing list
> > SNMP4J at agentpp.org
> > http://lists.agentpp.org/mailman/listinfo/snmp4j
_______________________________________________
SNMP4J mailing list
[email protected]
http://lists.agentpp.org/mailman/listinfo/snmp4j

Reply via email to