[jcifs] Re: jcifs.smb.Dfs bugs

Michael B Allen miallen at ioplex.com
Fri Apr 25 17:37:24 GMT 2008


On Thu, 24 Apr 2008 16:40:32 +0200
Ronny Schuetz <Usenet.r96 at gishpuppy.com> wrote:

> Hi Mike,
> 
> >>> Btw, accesses to "referrals" cache are unsynchronized, I think this 
> >>> needs to be changed as well as there is only one static Dfs instance.
> >> True. Some maps should be synchronized. I'll create an update for this.
> > 
> > Ronny,
> > 
> > Make the jcifs.smb.client.Dfs.resolve() method synchronized:
> > 
> >   public synchronized DfsReferral resolve(String domain, ...
> > 
> > and try your tests again. I wouldn't be surprised if that fixed all of
> > your DFS related issues.
> > 
> > Note that you can also temporarily reduce jcifs.smb.client.dfs.ttl to
> > say 10 seconds to really stess the DFS cache code.
> 
> I did that. Actually a bit different, as the referrals cache is used in 
> #insert as well.

Indeed.

Please try this package:

  http://jcifs.samba.org/src/1.2.20c.jar
  http://jcifs.samba.org/src/1.2.20c.zip
  http://jcifs.samba.org/src/1.2.20c.tgz

It has the thread-safe DFS cache changes and the getTrustedDomains
lookup fix.

> So to be on the safe side, I just added a new lock 
> object "referralsLock" to the class and synchronized the blocks using 
> the referrals cache in #resolve and #insert. dfs.ttl is set to 15s as well.

Well you don't need to use a separate object. Just synchronize on
SmbFile.dfs around the insert. See 1.2.20c code.

Mike

-- 
Michael B Allen
PHP Active Directory SPNEGO SSO
http://www.ioplex.com/


More information about the jcifs mailing list