commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Filip Defoort <>
Subject Re: [VFS] accessing FileObjects from different threads
Date Wed, 12 Jul 2006 07:38:04 GMT
Hi Mario,

Indeed -- it's been a while again... too little time, too many things to do;
but I keep coming back to VFS :-D. Still would love to find the time
to improve the normalization...

It's primarily reads of metadata about the FileObjects that I think are 
the problems (listChildren(), getType(),...) -- I don't touch the actual 
often enough to show any signs there.   It showed up after switching
to RC8-snapshot to work around the cache freshness problem and some
changes in my code to page in information on demand as the main
tables scroll independently.

The symptom is either deadlock on FileObject synchronization or NPE,
depending on the test.

I'll have testing done tomorrow with HEAD and see if it props up with 
the very latest
VFS (without the SynchronizedFileObject decoration) and will let you
know... If the problem is still there, I can get you the thread dumps...

Thanks and Cheers!
- Filip

Mario Ivankovits wrote:
> Hi Filip, nice to read you again.
>> Sometimes, the FileObject gets detached while it's still being used by
>> another
>> thread causing exceptions and sometimes the FileObject go into a
>> deadlock.
> As you already noticed ( you are bleedingly fast) :-) I committed a try
> to fix this issue.
> Maybe if you simply try the svn head version it might behave better
> already without any additional change. But for sure, if one thread tries
> to copy the file and another one deletes it at the same time you'll get
> exceptions again.
> Could you please provide more informations about the operations you try
> in parallel on the same fileObject?
> The next NEW thing you can try is, to decorate the file object so that
> it will synchronize each call.
>         StandardFileSystemManager manager = new StandardFileSystemManager();
>         manager.setCacheStrategy(CacheStrategy.ON_RESOLVE);
>         manager.setFileObjectDecorator(SynchronizedFileObject.class);
>         manager.init();
> if you use instanceof with your FileObjects you have to change this to
> FileObjectUtils.isInstanceOf
> However, the deadlock problem might be more problematic. We need a "full
> thread dump" to figure out whats the problem.
> Also the SynchronizedFileObject might introduce new deadlocks as it
> synchronize against the fileObject instance, internally the FileObject
> itself has to synchronize against the fileSystem .... but hey, its a try.
> Could you please check this out.
> Thanks!
> Ciao,
> Mario
> ---------------------------------------------------------------------
> To unsubscribe, e-mail:
> For additional commands, e-mail:

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message