Hi Thomas,

If you set the socket timeout to a value >0 (which is recommended), then
the worker thread is joined on the close().
If the timeout is 0, no join is performed because otherwise a deadlock would occur if the interrupt call is triggered by the close() method while the worker thread
is not in the select method (i.e., waiting on IO).

Thus, I would not change the existing code.

Best regards,
Frank

Am 26.05.2015 um 22:13 schrieb Thomas L:
Hello,

I think I have found a bug in SNMP4J (2.3.3) where we can have a "BindException: 
Address already in use" exception when creating a DefaultUdpTransportMapping, 
whereas reuseAddress=true, if we have previously created and closed a similar 
DefaultUdpTransportMapping.
In DefaultUdpTransportMapping.close(), the listener thread (WorkerTask) is not 
"joined", so it can still use the UDP port for some time, and creating a new 
DefaultUdpTransportMapping on the same port, even if reuseAddress=true, is not possible.
My current dirty workaround is to access the "WorkerTask" field by reflection just before 
closing the Snmp object, and then calling "join()" on the object, so I am sure the thread 
is correctly terminated before any new attempt to create a new DefaultUdpTransportMapping.

Can this problem be solved in the next version of SNM4J?

Regards,
Thomas
_______________________________________________
SNMP4J mailing list
[email protected]
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
[email protected]
https://oosnmp.net/mailman/listinfo/snmp4j

Reply via email to