[jcifs] java.io.IOException: Failed to establish session
adam.morgan at Q1Labs.com
Wed Jul 14 06:19:11 MDT 2010
Thanks for the responses - it is appreciated. I'm sending the packet
capture in an email to you only. Here's the stack trace. I will
include these from the get go next time :)
java.io.IOException: Failed to establish session with
From: Michael B Allen [mailto:ioplex at gmail.com]
Sent: Tuesday, July 13, 2010 6:10 PM
To: Adam Morgan
Cc: jcifs at lists.samba.org
Subject: Re: [jcifs] java.io.IOException: Failed to establish session
If it immediately connects successfully after you restart the JVM,
then that sound like a bug in JCIFS. It sounds like the transport
state is not being correctly reset under some condition. I will have
to try to replicate this issue at my end. I have added this issue to
the TODO for further investigation.
If you have a capture, by all means send it to me (but do NOT post
packet captures to the mailing list). I might be able to quickly spot
Also, generally, if you are seeing an error, usually it's a good idea
to post the corresponding stack trace or error message or whatever
error information you have.
Michael B Allen
Java Active Directory Integration
On Tue, Jul 13, 2010 at 9:41 AM, Adam Morgan <adam.morgan at q1labs.com>
> Thanks Mike. Musta been a Friday thing. More to this... now that the
exception is being passed on as expected we're seeing the underlying
issue and this is my next query.
> We're doing some tests to simulate network connectivity disappearing.
Everything connects as expected initially. Then we drop the network
adapter on the windows server so that our client cannot connect (or will
drop a current connection). We then go into a reconnect loop until the
adapter is brought back up. At this point, if the period of disconnect
is relatively short (ie a minute) the client will pick up where it left
> An issue seems to arise when the disconnection is prolonged. I cannot
be certain of a more specific duration unfortunately. When it is
prolonged, even once the server is back up, the client falls into a
state where it cannot connect. I have debugged, and have tracked it
down to SmbTransport.ssn139(). It does the readn() on line 196, then
falls to line 211, case "NbtException.CALLED_NOT_PRESENT". Resulting in
an exception from line 230.
> The server box is absolutely available at this time, there's no
firewall issue, and if I restart the JVM, the client will reconnect.
Can u shed any light? I can send u a tcpdump packet capture if this is
> -----Original Message-----
> From: Michael B Allen [mailto:ioplex at gmail.com]
> Sent: Saturday, July 10, 2010 3:42 AM
> To: Adam Morgan
> Cc: jcifs at lists.samba.org
> Subject: Re: [jcifs] java.io.IOException: Failed to establish session
> On Fri, Jul 9, 2010 at 9:25 AM, Adam Morgan <adam.morgan at q1labs.com>
>> Thank you for the response Mike. However, I'm not sure this will fix
my issue. This will just log the exception to STDERR unless I'm
mistaken. Is there no way to pass the exception up the stack to my
code? Else there's no graceful way to handle the error.
> Hi Adam,
> The default log.level is 1 and of course you can direct the log to a
> file. So the patch is correct. It will no longer clutter the console
> or application logs.
> As for the "way to handle the error", if you study Transport.java
> closely you'll see that the exception is saved and then re-thrown in
> connect() unless the error happens after the connect timeout has
> expired in which case the calling thread will get a "Connection
> timeout" exception instead. Then by the time the "Failed to establish
> session" is thrown afterward, the caller will have moved on and so the
> exception is just logged and discarded as trying to do otherwise would
> be redundant.
>> -----Original Message-----
>> From: Michael B Allen [mailto:ioplex at gmail.com]
>> Sent: Thursday, July 08, 2010 5:11 PM
>> To: Adam Morgan
>> Cc: jcifs at lists.samba.org
>> Subject: Re: [jcifs] java.io.IOException: Failed to establish session
>> Hi Adam,
>> That is indeed a mistake. The code should read:
>> 243 if (log.level >= 2)
>> 244 ex0.printStackTrace(log);
>> I have adjusted this in my local copy and it will be included in the
>> next release.
>> Thanks for the feedback.
>> On Wed, Jul 7, 2010 at 11:03 AM, Adam Morgan <adam.morgan at q1labs.com>
>>> I'm running into an issue related to network connectivity. We've
>>> windows box with samba and are connecting successfully with a
>>> have a script running on the windows box to periodically turn off
>>> network adapter. This is resulting in an exception being written to
>>> by the jcifs library, but the issue is never elevated to our code so
>>> cannot handle it gracefully (ie try a reconnect). We're not doing
>>> funky with configuration, just using the API in vanilla mode.
>>> Here's the exception:
>>> java.io.IOException: Failed to establish session with
>>> at jcifs.smb.SmbTransport.ssn139(SmbTransport.java:230)
>>> at jcifs.smb.SmbTransport.negotiate(SmbTransport.java:247)
>>> at jcifs.smb.SmbTransport.doConnect(SmbTransport.java:309)
>>> at jcifs.util.transport.Transport.run(Transport.java:232)
>>> at java.lang.Thread.run(Thread.java:619)
>>> I see in jcifs.util.transport.Transport, line 243, that the
>>> being printed to STDOUT.
>>> Can u explain why this exception isn't passed on up thru to the code
>>> using the API so we can handle it gracefully? I've seen other
>>> exceptions that DO get passed up the chain so what might be making
>>> not get passed up?
>> Michael B Allen
>> Java Active Directory Integration
> Michael B Allen
> Java Active Directory Integration
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the jCIFS