> >
> > I will keep testing. Just wanted to provide some early
> feedback. For
> the
> > most part, it all seems to be working OK. However, I
> experience the
> > deadlock everytime when I have an incoming file add and I
> do an update.
> I
> > get the progress dialog up and it show Building Workspace and Team
> > Sync Operation. If I cancel the latter I am back in
> business. I do
> > not see this on updates or deletes.
>
> fyi .. the problem is much worse when doing an update
> involving the add of a folder and file within the folder. In
> that case, Eclipse hangs and there is nothing I can cancel.
> I had to kill it.
>
> Mark
These multithreaded things are really fun to debug.
Smells like quantum physics - just observing it changes its behaviour ...
(Like when I put some debug trace to stdout, the threads tend to synchronize
and no deadlocks appear ...)
Anyway, the synchronized/deadlock problem seems to be caused by the
SyncInfoSynchronizedAccessor#internalSetCachedSyncBytes method.
It's calling a long running Synchronizer#setSyncInfo and then ...
I think I was bit too paranoid putting the synchronized keyword there.
Only methods which are accessing
SyncInfoSynchronizedAccessor#pendingCacheWrites map should be synchronized.
So if you'll remove the synchronize keywords from internalSetCachedSyncBytes
and internalGetCachedSyncBytes of SyncInfoSynchronizedAccessor,
the deadlocks should not occur anymore ...
Martin
Received on Fri Jul 8 17:20:27 2005