[jcifs] jcifs eats InterruptedException

Michael B Allen ioplex at gmail.com
Sat Feb 14 20:51:37 MST 2015


On Fri, Feb 6, 2015 at 3:23 AM, Igor Golikov <igolikov at gmail.com> wrote:
> Hi all,
>
> I found that it is impossible to interrupt thread that performs some
> operations using jcifs.
>
> Here is an example
>
>     java.lang.Object.wait(Object.java:-2)
>     java.lang.Object.wait(Object.java:503)
>     jcifs.UniAddress.lookupServerOrWorkgroup(UniAddress.java:176)
> <----------- part A
>     jcifs.UniAddress.getAllByName(UniAddress.java:290)
>     jcifs.UniAddress.getByName(UniAddress.java:245) <----------- part B
>     jcifs.smb.Dfs.getTrustedDomains(Dfs.java:62)
>     jcifs.smb.Dfs.resolve(Dfs.java:167)
>     jcifs.smb.SmbFile.doConnect(SmbFile.java:902)
>     jcifs.smb.SmbFile.connect(SmbFile.java:954)
>     jcifs.smb.SmbFile.connect0(SmbFile.java:880)
>     jcifs.smb.SmbFile.open0(SmbFile.java:972)
>     jcifs.smb.SmbFile.open(SmbFile.java:1006)
>     jcifs.smb.SmbFileOutputStream.<init>(SmbFileOutputStream.java:142)
>     jcifs.smb.SmbFileOutputStream.<init>(SmbFileOutputStream.java:97)
>     jcifs.smb.SmbFileOutputStream.<init>(SmbFileOutputStream.java:67)
>
>
> Part A - replacing InterruptedException with UnknownHostException
> ============================================
> ...
> } catch( InterruptedException ie ) {
>     throw new UnknownHostException( name );
> }
> ...
>
>
> Part B - hiding UnknownHostException
> ============================================
> ...
> } catch (IOException ioe) {
>     if (log.level >= 3)
>         ioe.printStackTrace(log);
>     if (strictView && ioe instanceof SmbAuthException) {
>         throw (SmbAuthException)ioe;
>     }
> }
> ...
>
>
> Why it hides InterruptedException?

Hi Igor,

Calling Thread.interrupt is a very dubious thing to do. I cannot
recall *every* calling Thread.interrupt in all my years of writing
Java code.

JCIFS probably catches those because it might otherwise leave the
client in a bad state. But I honestly don't recall the exact reason.
That particular code is probably 10 years old.

You might want to rephrase your issue and describe why you want to
call Thread.interrupt in the first place.

Mike

-- 
Michael B Allen
Java Active Directory Integration
http://www.ioplex.com/


More information about the jCIFS mailing list