<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns="http://www.w3.org/TR/REC-html40">

<head>
<meta http-equiv=Content-Type content="text/html; charset=us-ascii">
<meta name=Generator content="Microsoft Word 11 (filtered medium)">
<style>
<!--
 /* Font Definitions */
 @font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman";}
a:link, span.MsoHyperlink
        {color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {color:purple;
        text-decoration:underline;}
pre
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:10.0pt;
        font-family:"Courier New";}
span.E-MailFormatvorlage17
        {mso-style-type:personal-compose;
        font-family:Arial;
        color:windowtext;}
@page Section1
        {size:595.3pt 841.9pt;
        margin:70.85pt 70.85pt 2.0cm 70.85pt;}
div.Section1
        {page:Section1;}
-->
</style>

</head>

<body lang=DE link=blue vlink=purple>

<div class=Section1>

<p class=MsoNormal><font size=3 face="Times New Roman"><span lang=EN-US
style='font-size:12.0pt'>Hi JCIFS support team,<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-US style='font-size:
10.0pt;font-family:Arial'><o:p> </o:p></span></font></p>

<p class=MsoNormal><font size=3 face="Times New Roman"><span lang=EN-US
style='font-size:12.0pt'>while we are investigating thread behavior on our
application server we stumbled over dozens of Transport threads in blocking
state. It turned out that they are belonging to the jCIFS framework on
connecting to a not existing SMB resource. To reproduce this I wrote a little piece
of code:<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=3 face="Times New Roman"><span lang=EN-US
style='font-size:12.0pt'><o:p> </o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 color=black
face=Consolas><span style='font-size:10.0pt;font-family:Consolas;color:black'>       
</span></font><b><font size=2 color="#7f0055" face=Consolas><span
style='font-size:10.0pt;font-family:Consolas;color:#7F0055;font-weight:bold'>for</span></font></b><font
size=2 color=black face=Consolas><span style='font-size:10.0pt;font-family:
Consolas;color:black'> (</span></font><b><font size=2 color="#7f0055"
face=Consolas><span style='font-size:10.0pt;font-family:Consolas;color:#7F0055;
font-weight:bold'>int</span></font></b><font size=2 color=black face=Consolas><span
style='font-size:10.0pt;font-family:Consolas;color:black'> i = 0; i < 100;
i++) {</span></font><font size=2 face=Consolas><span style='font-size:10.0pt;
font-family:Consolas'><o:p></o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 color=black
face=Consolas><span style='font-size:10.0pt;font-family:Consolas;color:black'>           
</span></font><b><font size=2 color="#7f0055" face=Consolas><span
style='font-size:10.0pt;font-family:Consolas;color:#7F0055;font-weight:bold'>try</span></font></b><font
size=2 color=black face=Consolas><span style='font-size:10.0pt;font-family:
Consolas;color:black'> {</span></font><font size=2 face=Consolas><span
style='font-size:10.0pt;font-family:Consolas'><o:p></o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 color=black
face=Consolas><span style='font-size:10.0pt;font-family:Consolas;color:black'>               
SmbFile folder = </span></font><b><font size=2 color="#7f0055" face=Consolas><span
style='font-size:10.0pt;font-family:Consolas;color:#7F0055;font-weight:bold'>new</span></font></b><font
size=2 color=black face=Consolas><span style='font-size:10.0pt;font-family:
Consolas;color:black'> SmbFile("</span></font><font size=2 color="#2a00ff"
face=Consolas><span style='font-size:10.0pt;font-family:Consolas;color:#2A00FF'>smb://192.168.100.77/test"</span></font><font
size=2 color=black face=Consolas><span style='font-size:10.0pt;font-family:
Consolas;color:black'>);</span></font><font size=2 face=Consolas><span
style='font-size:10.0pt;font-family:Consolas'><o:p></o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 color=black
face=Consolas><span style='font-size:10.0pt;font-family:Consolas;color:black'>               
folder.exists();</span></font><font size=2 face=Consolas><span
style='font-size:10.0pt;font-family:Consolas'><o:p></o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 color=black
face=Consolas><span style='font-size:10.0pt;font-family:Consolas;color:black'>           
}</span></font><font size=2 face=Consolas><span style='font-size:10.0pt;
font-family:Consolas'><o:p></o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 color=black
face=Consolas><span style='font-size:10.0pt;font-family:Consolas;color:black'>           
</span></font><b><font size=2 color="#7f0055" face=Consolas><span
style='font-size:10.0pt;font-family:Consolas;color:#7F0055;font-weight:bold'>catch</span></font></b><font
size=2 color=black face=Consolas><span style='font-size:10.0pt;font-family:
Consolas;color:black'> (SmbException e) {<o:p></o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face=Consolas><span
style='font-size:10.0pt;font-family:Consolas'><o:p> </o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 color=black
face=Consolas><span style='font-size:10.0pt;font-family:Consolas;color:black'>           
}</span></font><font size=2 face=Consolas><span style='font-size:10.0pt;
font-family:Consolas'><o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=black face=Consolas><span
style='font-size:10.0pt;font-family:Consolas;color:black'>       
}<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=black face=Consolas><span
style='font-size:10.0pt;font-family:Consolas;color:black'><o:p> </o:p></span></font></p>

<p class=MsoNormal><font size=3 face="Times New Roman"><span lang=EN-US
style='font-size:12.0pt'>My observations with the tool VisualVM are as follows.
On the call exists() a thread named Transport1 is created. After 30 seconds a SmbException
occurs:<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=3 face="Times New Roman"><span lang=EN-US
style='font-size:12.0pt'><o:p> </o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face=Consolas><span
style='font-size:10.0pt;font-family:Consolas'>jcifs.smb.SmbException: Failed to
connect: 0.0.0.0<00>/192.168.100.77<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Consolas><span style='font-size:10.0pt;
font-family:Consolas'>jcifs.util.transport.TransportException: Connection
timeout<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Consolas><span style='font-size:10.0pt;
font-family:Consolas'><o:p> </o:p></span></font></p>

<p class=MsoNormal><font size=3 face="Times New Roman"><span lang=EN-US
style='font-size:12.0pt'>That is okay because the resource dos not exist. The
next call to exists() creates another Transport1 thread, while the first one is
still active for further 15 seconds. The second one is getting blocked by the
first thread. Because of the fact that the interval threads are getting
produced is shorter than the interval the threads are running, more and more
threads are in blocking state.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=3 face="Times New Roman"><span lang=EN-US
style='font-size:12.0pt'>I tested it with jCIFS version 1.3.15 and 1.3.17.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=3 face="Times New Roman"><span lang=EN-US
style='font-size:12.0pt'><o:p> </o:p></span></font></p>

<p class=MsoNormal><font size=3 face="Times New Roman"><span lang=EN-US
style='font-size:12.0pt'>The quick and dirty solution is to wait al least 15
seconds after every thrown exception, but in my opinion it can't be the callers
<span class=st>responsibility to handle frameworks internal processes. And what
if I want to access the same resource from different places in my code?<o:p></o:p></span></span></font></p>

<p class=MsoNormal><span class=st><font size=3 face="Times New Roman"><span
lang=EN-US style='font-size:12.0pt'><o:p> </o:p></span></font></span></p>

<p class=MsoNormal><span class=st><font size=3 face="Times New Roman"><span
lang=EN-US style='font-size:12.0pt'>Do you agree with this or am I doing
something completely wrong?</span></font></span><span lang=EN-US><o:p></o:p></span></p>

</div>

</body>

</html>