[jcifs] ConcurrentModification exception from SmbTransport using
examples/SmbCrawler
Eric
eglass1 at comcast.net
Tue Sep 30 08:48:36 EST 2003
> java.util.ConcurrentModificationException
> at
> java.util.LinkedList$ListItr.checkForComodification(LinkedList.java:552)
> at java.util.LinkedList$ListItr.next(LinkedList.java:488)
> at jcifs.smb.SmbTransport.tryClose(SmbTransport.java:310)
> at jcifs.smb.SmbTransport.run(SmbTransport.java:440)
> at java.lang.Thread.run(Thread.java:534)
>
Try the attached; access to the sessions list in getSmbSession is
synchronized on the SmbTransport instance, but the iteration in the
tryClose method is unsynchronized. If getSmbSession is called by one
thread while the iteration in tryClose is open, the linked list will
detect and throw this exception (Iterators are fail-fast). The attached
synchronizes the access to the sessions list in tryClose on the
SmbTransport object. Previously (in jCIFS 0.7.10 at least), the
sessions list was implemented as a Vector and used the elements
enumeration, which isn't fail-fast; the Iterator's behavior is more
robust, as it guarantees deterministic results.
Eric
-------------- next part --------------
A non-text attachment was scrubbed...
Name: transport.zip
Type: application/zip
Size: 7683 bytes
Desc: not available
Url : http://lists.samba.org/archive/jcifs/attachments/20030929/71094f16/transport.zip
More information about the jcifs
mailing list