[jcifs] Multiple Threads Causes Server Timeout
tim_wiffen at westlb.co.uk
tim_wiffen at westlb.co.uk
Fri Apr 15 13:17:16 GMT 2005
Thanks for your input Mike.
I have tried again with 1.1.9trans JAR and get different exceptions. I
think the output is a bit mixed up as the different threads report their
exceptions. I have tried this with other servers and don't seem to get the
same kind of errors, so it seems to be a problem with this particular
server (a Win2k box) but exactly what is difficult to say. I've included
the errors below in case your interested.
I have also met the concurrency error in my testing (possibly more likely
on my dual Xeon Hyper Threaded setup) and this may be related but it
something about this server seems more likely.
In trying 1.1.9trans I met some errors that do not occur in 1.19 which I
have included below. I get these errors even on servers other than the
problem one on our network.
I would like to use SmbFile.copyTo() but I couldn't see how to make it
copy to a java.io.File which I need to do to create it on the local file
system.
Regards
Tim Wiffen
==============================
jcifs.smb.SmbException:
jcifs.util.transport.TransportException: Transport1 timedout waiting for
response to SmbComClose[command=SMB_COM_CLOSE,received=false,errorCode=The
operation completed
successfully.,flags=0x0018,flags2=0xC003,signSeq=0,tid=2051,pid=45147,uid=2051,mid=32771,wordCount=3,byteCount=0,fid=32774,lastWriteTime=0]
at jcifs.util.transport.Transport.sendrecv(Transport.java:74)
at jcifs.smb.SmbTransport.send(SmbTransport.java:454)
at jcifs.smb.SmbSession.send(SmbSession.java:261)
at jcifs.smb.SmbTree.send(SmbTree.java:91)
at jcifs.smb.SmbFile.send(SmbFile.java:687)
at jcifs.smb.SmbFile.close(SmbFile.java:859)
at jcifs.smb.SmbFile.close(SmbFile.java:865)
at jcifs.smb.SmbFile.close(SmbFile.java:869)
at jcifs.smb.SmbFileInputStream.close(SmbFileInputStream.java:80)
at
com.westlb.GOScheduler.util.TestFileManagement.jcifsCopy(TestFileManagement.java:242)
at
com.westlb.GOScheduler.util.TestFileManagement.access$000(TestFileManagement.java:27)
at
com.westlb.GOScheduler.util.TestFileManagement$2CopyThread.run(TestFileManagement.java:187)
at java.lang.Thread.run(Thread.java:595)
at jcifs.smb.SmbTransport.send(SmbTransport.java:459)
at jcifs.smb.SmbSession.send(SmbSession.java:261)
at jcifs.smb.SmbTree.send(SmbTree.java:91)
at jcifs.smb.SmbFile.send(SmbFile.java:687)
at jcifs.smb.SmbFile.close(SmbFile.java:859)
at jcifs.smb.SmbFile.close(SmbFile.java:865)
at jcifs.smb.SmbFile.close(SmbFile.java:869)
at jcifs.smb.SmbFileInputStream.close(SmbFileInputStream.java:80)
at
com.westlb.GOScheduler.util.TestFileManagement.jcifsCopy(TestFileManagement.java:242)
at
com.westlb.GOScheduler.util.TestFileManagement.access$000(TestFileManagement.java:27)
at
com.westlb.GOScheduler.util.TestFileManagement$2CopyThread.run(TestFileManagement.java:187)
at java.lang.Thread.run(Thread.java:595)
jcifs.smb.SmbException:
jcifs.util.transport.TransportException: Transport1 timedout waiting for
response to SmbComClose[command=SMB_COM_CLOSE,received=false,errorCode=The
operation completed
successfully.,flags=0x0018,flags2=0xC003,signSeq=0,tid=2051,pid=45147,uid=2051,mid=32772,wordCount=3,byteCount=0,fid=49161,lastWriteTime=0]
at jcifs.util.transport.Transport.sendrecv(Transport.java:74)
at jcifs.smb.SmbTransport.send(SmbTransport.java:454)
at jcifs.smb.SmbSession.send(SmbSession.java:261)
at jcifs.smb.SmbTree.send(SmbTree.java:91)
at jcifs.smb.SmbFile.send(SmbFile.java:687)
at jcifs.smb.SmbFile.close(SmbFile.java:859)
at jcifs.smb.SmbFile.close(SmbFile.java:865)
at jcifs.smb.SmbFile.close(SmbFile.java:869)
at jcifs.smb.SmbFileInputStream.close(SmbFileInputStream.java:80)
at
com.westlb.GOScheduler.util.TestFileManagement.jcifsCopy(TestFileManagement.java:242)
at
com.westlb.GOScheduler.util.TestFileManagement.access$000(TestFileManagement.java:27)
at
com.westlb.GOScheduler.util.TestFileManagement$2CopyThread.run(TestFileManagement.java:187)
at java.lang.Thread.run(Thread.java:595)
at jcifs.smb.SmbTransport.send(SmbTransport.java:459)
at jcifs.smb.SmbSession.send(SmbSession.java:261)
2005-04-15 09:33:22,682 INFO [Worker0] util.TestFileManagement
(TestFileManagement.java:226) -- Fetching
smb://USERNAME:PASSWORD@eUSERNAME.emea.westlb.net/Extract/Current/f318af300_Lon
at jcifs.smb.SmbTree.send(SmbTree.java:91)
at jcifs.smb.SmbFile.send(SmbFile.java:687)
at jcifs.smb.SmbFile.close(SmbFile.java:859)
at jcifs.smb.SmbFile.close(SmbFile.java:865)
at jcifs.smb.SmbFile.close(SmbFile.java:869)
at jcifs.smb.SmbFileInputStream.close(SmbFileInputStream.java:80)
at
com.westlb.GOScheduler.util.TestFileManagement.jcifsCopy(TestFileManagement.java:242)
at
com.westlb.GOScheduler.util.TestFileManagement.access$000(TestFileManagement.java:27)
at
com.westlb.GOScheduler.util.TestFileManagement$2CopyThread.run(TestFileManagement.java:187)
at java.lang.Thread.run(Thread.java:595)
jcifs.smb.SmbException:
2005-04-15 09:33:22,698 INFO [Worker2] util.TestFileManagement
(TestFileManagement.java:226) -- Fetching
smb://USERNAME:PASSWORD@someserver.aserver.net/Extract/Current/f318af300_Sin
jcifs.util.transport.TransportException: Transport1 timedout waiting for
response to SmbComClose[command=SMB_COM_CLOSE,received=false,errorCode=The
operation completed
successfully.,flags=0x0018,flags2=0xC003,signSeq=0,tid=2051,pid=45147,uid=2051,mid=32773,wordCount=3,byteCount=0,fid=49160,lastWriteTime=0]
at jcifs.util.transport.Transport.sendrecv(Transport.java:74)
at jcifs.smb.SmbTransport.send(SmbTransport.java:454)
at jcifs.smb.SmbSession.send(SmbSession.java:261)
at jcifs.smb.SmbTree.send(SmbTree.java:91)
at jcifs.smb.SmbFile.send(SmbFile.java:687)
at jcifs.smb.SmbFile.close(SmbFile.java:859)
at jcifs.smb.SmbFile.close(SmbFile.java:865)
at jcifs.smb.SmbFile.close(SmbFile.java:869)
at jcifs.smb.SmbFileInputStream.close(SmbFileInputStream.java:80)
at
com.westlb.GOScheduler.util.TestFileManagement.jcifsCopy(TestFileManagement.java:242)
at
com.westlb.GOScheduler.util.TestFileManagement.access$000(TestFileManagement.java:27)
at
com.westlb.GOScheduler.util.TestFileManagement$2CopyThread.run(TestFileManagement.java:187)
at java.lang.Thread.run(Thread.java:595)
at jcifs.smb.SmbTransport.send(SmbTransport.java:459)
at jcifs.smb.SmbSession.send(SmbSession.java:261)
at jcifs.smb.SmbTree.send(SmbTree.java:91)
at jcifs.smb.SmbFile.send(SmbFile.java:687)
at jcifs.smb.SmbFile.close(SmbFile.java:859)
at jcifs.smb.SmbFile.close(SmbFile.java:865)
at jcifs.smb.SmbFile.close(SmbFile.java:869)
at jcifs.smb.SmbFileInputStream.close(SmbFileInputStream.java:80)
at
com.westlb.GOScheduler.util.TestFileManagement.jcifsCopy(TestFileManagement.java:242)
at
com.westlb.GOScheduler.util.TestFileManagement.access$000(TestFileManagement.java:27)
at
com.westlb.GOScheduler.util.TestFileManagement$2CopyThread.run(TestFileManagement.java:187)
at java.lang.Thread.run(Thread.java:595)
2005-04-15 09:33:22,698 INFO [Worker1] util.TestFileManagement
(TestFileManagement.java:226) -- Fetching
smb://USERNAME:PASSWORD@someserver.aserver.net/Extract/Current/f318fd1.ext.1
Exception in thread "Worker0" java.lang.NullPointerException
at
com.westlb.GOScheduler.util.TestFileManagement.jcifsCopy(TestFileManagement.java:241)
at
com.westlb.GOScheduler.util.TestFileManagement.access$000(TestFileManagement.java:27)
at
com.westlb.GOScheduler.util.TestFileManagement$2CopyThread.run(TestFileManagement.java:187)
at java.lang.Thread.run(Thread.java:595)
Exception in thread "Worker2" java.lang.NullPointerException
at
com.westlb.GOScheduler.util.TestFileManagement.jcifsCopy(TestFileManagement.java:241)
at
com.westlb.GOScheduler.util.TestFileManagement.access$000(TestFileManagement.java:27)
at
com.westlb.GOScheduler.util.TestFileManagement$2CopyThread.run(TestFileManagement.java:187)
at java.lang.Thread.run(Thread.java:595)
Exception in thread "Worker1" java.lang.NullPointerException
at
com.westlb.GOScheduler.util.TestFileManagement.jcifsCopy(TestFileManagement.java:241)
at
com.westlb.GOScheduler.util.TestFileManagement.access$000(TestFileManagement.java:27)
at
com.westlb.GOScheduler.util.TestFileManagement$2CopyThread.run(TestFileManagement.java:187)
at java.lang.Thread.run(Thread.java:595)
As an aside I tried connecting to a different server with the 1.1.9trans
jar and got this error which I don't get with 1.1.9:
jcifs.smb.SmbException:
jcifs.util.transport.TransportException
java.net.ConnectException: Connection refused: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
at
java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:364)
at java.net.Socket.connect(Socket.java:507)
at java.net.Socket.connect(Socket.java:457)
at java.net.Socket.<init>(Socket.java:365)
at java.net.Socket.<init>(Socket.java:238)
at jcifs.smb.SmbTransport.doConnect(SmbTransport.java:200)
at jcifs.util.transport.Transport.run(Transport.java:194)
at java.lang.Thread.run(Thread.java:595)
at jcifs.util.transport.Transport.run(Transport.java:210)
at java.lang.Thread.run(Thread.java:595)
at jcifs.smb.SmbTransport.connect(SmbTransport.java:196)
at jcifs.smb.SmbTree.treeConnect(SmbTree.java:118)
at jcifs.smb.SmbFile.connect(SmbFile.java:790)
at jcifs.smb.SmbFile.connect0(SmbFile.java:760)
at jcifs.smb.SmbFile.send(SmbFile.java:659)
at jcifs.smb.SmbFile.doFindFirstNext(SmbFile.java:1677)
at jcifs.smb.SmbFile.listFiles(SmbFile.java:1568)
at jcifs.smb.SmbFile.listFiles(SmbFile.java:1476)
"Michael B Allen" <mba2000 at ioplex.com>
15/04/2005 00:41
To: tim_wiffen at westlb.co.uk
cc: jcifs at lists.samba.org
Subject: Re: [jcifs] Multiple Threads Causes Server Timeout
tim_wiffen at westlb.co.uk said:
> jcifs version: 1.1.9
>
> I have some code that runs a pool of 3 threads that pick file requests
off
> a list and fetch them. As a unit test I am using this to copy 300 files
> (total size of files 500MB) in a directory on a remote server. However
> after copying about 50 files I start to get SmbExceptions but other
files
> are copied successfully after these errors:
>
> jcifs.smb.SmbException: Timeout waiting for response from server:
> someserver.myserver.net/123.45.67.89
> at jcifs.smb.SmbTransport.send(SmbTransport.java:671)
I can't reproduce this. Your example runs ok for me. I had to change the
path a little to point to a directory with files.
I have to wonder if maybe your network has a problem. For example, one
thing that could cause this kind of trouble is if your NIC is set to
half-duplex but the router wants full-duplex. Or visa-versa. Check it out.
Otherwise I ran your example several times on a large directory of files
and it worked 100%. I ran it with 20 threads a couple times and it worked
fine.
Note there is a known concurrency error that someone reported but at this
point I do not think your problem is related. Also, note the
jcifs-1.1.9trans.jar I pointed you to *does* fail your test in a very
similar way (timeout) but for entirely different reasons (bad mid
rollover).
Try your test on a different network.
Also, note your Iterator is not synchronized. I don't think that's a
problem but thought I would mention it.
Mike
PS: I realize you're just testing but for a variety of reasons any file
copying you do should always be done using SmbFile.copyTo().
This message is confidential and may be privileged. It is
intended solely for the named addressee. If you are not the
intended recipient please inform us. Any unauthorised
dissemination, distribution or copying hereof is prohibited.
As we cannot guarantee the genuineness or completeness of
the information contained in this message, the statements
set forth above are not legally binding. In connection
therewith, we also refer to the governing regulations of
WestLB concerning signatory authority published in the
standard bank signature lists with regard to the legally
binding effect of statements made with the intent to
obligate WestLB.
Diese Nachricht ist vertraulich. Sie ist ausschliesslich fuer
den im Adressfeld ausgewiesenen Adressaten bestimmt.
Sollten Sie nicht der vorgesehene Empfaenger sein, so bitten
wir um eine kurze Nachricht. Jede unbefugte Weiterleitung
oder Fertigung einer Kopie ist unzulaessig. Da wir nicht die
Echtheit oder Vollstaendigkeit der in dieser Nachricht
enthaltenen Informationen garantieren koennen, schliessen wir
die rechtliche Verbindlichkeit der vorstehenden Erklaerungen
und Aeusserungen aus. Wir verweisen in diesem Zusammenhang
auch auf die fuer die Bank geltenden Regelungen ueber die
Verbindlichkeit von Willenserklaerungen mit verpflichtendem
Inhalt, die in den bankueblichen Unterschriftenverzeichnissen
bekannt gemacht werden.
-------------- next part --------------
HTML attachment scrubbed and removed
More information about the jcifs
mailing list