[jcifs] Another Transport Thread issue

Michael B Allen mba2000 at ioplex.com
Wed May 10 21:15:00 GMT 2006


This basically shows one thread calling socketConnect and all the others
waiting for the connect to complete. After the connect times out all the
other threads throw the same exception. Actually I think the logic is
that if the transport is "in error" the thread resets the error indicator
and throws the exception. So the next thread reinitializes and tries
again. This is all completely normal. It just looks odd because you're
using so many threads.

As for a "solution" I would look into why you have so many threads
(e.g. logic error) and why the socketConnect is failing (e.g. network
conjestion).

Mike


On Wed, 10 May 2006 15:41:31 -0500
"Dalton, Tim" <Daltontf at AGEDWARDS.com> wrote:

> Before I start digging deeper into the code, I wanted to run this by the
> mailing list:
> 
> We are using jcifs 1.2.7 in an application that has many threads
> communicating LAN printers. What we seeing is excessive Thread creation.
> We see exceptions like below in the stdout which looks to be related:
> 
> 
> java.net.ConnectException: Connection timed out
> 	at java.net.PlainSocketImpl.socketConnect(Native Method)
> 	at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:305)
> 	at
> java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:171)
> 	at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:158)
> 	at java.net.Socket.connect(Socket.java:452)
> 	at java.net.Socket.connect(Socket.java:402)
> 	at java.net.Socket.<init>(Socket.java:309)
> 	at java.net.Socket.<init>(Socket.java:124)
> 	at jcifs.smb.SmbTransport.negotiate(SmbTransport.java:241)
> 	at jcifs.smb.SmbTransport.doConnect(SmbTransport.java:301)
> 	at jcifs.util.transport.Transport.run(Transport.java:217)
> 	at java.lang.Thread.run(Thread.java:534)
> java.net.ConnectException: Connection timed out
> 	at java.net.PlainSocketImpl.socketConnect(Native Method)
> 	at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:305)
> 	at
> java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:171)
> 	at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:158)
> 	at java.net.Socket.connect(Socket.java:452)
> 	at java.net.Socket.connect(Socket.java:402)
> 	at java.net.Socket.<init>(Socket.java:309)
> 	at java.net.Socket.<init>(Socket.java:124)
> 	at jcifs.smb.SmbTransport.ssn139(SmbTransport.java:178)
> 	at jcifs.smb.SmbTransport.negotiate(SmbTransport.java:236)
> 	at jcifs.smb.SmbTransport.doConnect(SmbTransport.java:301)
> 	at jcifs.util.transport.Transport.run(Transport.java:217)
> 	at java.lang.Thread.run(Thread.java:534)
> 
> When take a thread dump see many Threads assign the same name
> (indicating they are running against the same Transport object):
> 
> "Transport103" daemon prio=1 tid=0x08735210 nid=0x30e1 waiting for
> monitor entry [6b9f0000..6b9f08c8]
> 	at jcifs.smb.SmbTransport.negotiate(SmbTransport.java:227)
> 	- waiting to lock <0x47320950> (a [B)
> 	at jcifs.smb.SmbTransport.doConnect(SmbTransport.java:298)
> 	at jcifs.util.transport.Transport.run(Transport.java:217)
> 	at java.lang.Thread.run(Thread.java:534)
> 
> "Transport103" daemon prio=1 tid=0x086a98a8 nid=0x2d63 waiting for
> monitor entry [6718c000..6718c8c8]
> 	at jcifs.smb.SmbTransport.negotiate(SmbTransport.java:227)
> 	- waiting to lock <0x47320950> (a [B)
> 	at jcifs.smb.SmbTransport.doConnect(SmbTransport.java:298)
> 	at jcifs.util.transport.Transport.run(Transport.java:217)
> 	at java.lang.Thread.run(Thread.java:534)
> 
> "Transport103" daemon prio=1 tid=0x08734d18 nid=0x2ab3 waiting for
> monitor entry [5ce27000..5ce278c8]
> 	at jcifs.smb.SmbTransport.negotiate(SmbTransport.java:227)
> 	- waiting to lock <0x47320950> (a [B)
> 	at jcifs.smb.SmbTransport.doConnect(SmbTransport.java:298)
> 	at jcifs.util.transport.Transport.run(Transport.java:217)
> 	at java.lang.Thread.run(Thread.java:534)
> 
> "Transport103" daemon prio=1 tid=0x0875a4a8 nid=0x2733 waiting for
> monitor entry [606d8000..606d88c8]
> 	at jcifs.smb.SmbTransport.negotiate(SmbTransport.java:227)
> 	- waiting to lock <0x47320950> (a [B)
> 	at jcifs.smb.SmbTransport.doConnect(SmbTransport.java:298)
> 	at jcifs.util.transport.Transport.run(Transport.java:217)
> 	at java.lang.Thread.run(Thread.java:534)
> 
> "Transport103" daemon prio=1 tid=0x08733ff0 nid=0x2412 waiting for
> monitor entry [6a7cc000..6a7cc8c8]
> 	at jcifs.smb.SmbTransport.negotiate(SmbTransport.java:227)
> 	- waiting to lock <0x47320950> (a [B)
> 	at jcifs.smb.SmbTransport.doConnect(SmbTransport.java:298)
> 	at jcifs.util.transport.Transport.run(Transport.java:217)
> 	at java.lang.Thread.run(Thread.java:534)
> 
> "Transport103" daemon prio=1 tid=0x08732f68 nid=0x208d waiting for
> monitor entry [6b96f000..6b96f8c8]
> 	at jcifs.smb.SmbTransport.negotiate(SmbTransport.java:227)
> 	- waiting to lock <0x47320950> (a [B)
> 	at jcifs.smb.SmbTransport.doConnect(SmbTransport.java:298)
> 	at jcifs.util.transport.Transport.run(Transport.java:217)
> 	at java.lang.Thread.run(Thread.java:534)
> 
> And many more all waiting for this thread:
> 
> "Transport103" daemon prio=1 tid=0x081f5a78 nid=0x308d runnable
> [6a8ce000..6a8ce8c8]
> 	at java.net.PlainSocketImpl.socketConnect(Native Method)
> 	at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:305)
> 	- locked <0x46ef1c10> (a java.net.PlainSocketImpl)
> 	at
> java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:171)
> 	at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:158)
> 	at java.net.Socket.connect(Socket.java:452)
> 	at java.net.Socket.connect(Socket.java:402)
> 	at java.net.Socket.<init>(Socket.java:309)
> 	at java.net.Socket.<init>(Socket.java:124)
> 	at jcifs.smb.SmbTransport.ssn139(SmbTransport.java:178)
> 	at jcifs.smb.SmbTransport.negotiate(SmbTransport.java:236)
> 	- locked <0x47320950> (a [B)
> 	at jcifs.smb.SmbTransport.doConnect(SmbTransport.java:301)
> 	at jcifs.util.transport.Transport.run(Transport.java:217)
> 	at java.lang.Thread.run(Thread.java:534)
> 
> It seems that the session is too eager to create threads to connect. Has
> anyone else seen this ? 
> 
> Thanks
> Tim 
> 
> 
> -------------------------------------------------------------------------------------
> A.G. Edwards & Sons' outgoing and incoming e-mails are electronically
> archived and subject to review and/or disclosure to someone other 
> than the recipient.
> 
> -------------------------------------------------------------------------------------
> 
> 


More information about the jcifs mailing list