diff options
2 files changed, 18 insertions, 1 deletions
diff --git a/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/messages.properties b/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/messages.properties index 3e08ef595..66a55176e 100644 --- a/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/messages.properties +++ b/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/messages.properties @@ -328,3 +328,4 @@ CVSProviderPlugin.21=Synchronizes the CVS managed resources in your workspace wi CVSSyncTreeSubscriber.0={0} is not a valid comparison criteria for subscriber {1} CVSRevisionNumberCompareCriteria.1=Revision number comparison RemoteTagSynchronizer.0=Refreshing {0} +ReentrantLock.9=An error occurred writting CVS synchronization information to disk. Some information may be lost. diff --git a/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/syncinfo/ReentrantLock.java b/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/syncinfo/ReentrantLock.java index 50ea9def7..1a43bfd86 100644 --- a/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/syncinfo/ReentrantLock.java +++ b/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/syncinfo/ReentrantLock.java @@ -18,9 +18,12 @@ import java.util.Set; import org.eclipse.core.resources.IContainer; import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Platform; import org.eclipse.core.runtime.jobs.ISchedulingRule; import org.eclipse.team.internal.ccvs.core.CVSException; +import org.eclipse.team.internal.ccvs.core.CVSProviderPlugin; +import org.eclipse.team.internal.ccvs.core.CVSStatus; import org.eclipse.team.internal.ccvs.core.Policy; import org.eclipse.team.internal.ccvs.core.util.Assert; @@ -75,10 +78,23 @@ public class ReentrantLock { return (IContainer[]) changedFolders.toArray(new IContainer[changedFolders.size()]); } public void flush(IProgressMonitor monitor) throws CVSException { - operation.flush(this, monitor); + try { + operation.flush(this, monitor); + } catch (OutOfMemoryError e) { + throw e; + } catch (Error e) { + handleAbortedFlush(e); + throw e; + } catch (RuntimeException e) { + handleAbortedFlush(e); + throw e; + } changedResources.clear(); changedFolders.clear(); } + private void handleAbortedFlush(Throwable t) { + CVSProviderPlugin.log(new CVSStatus(IStatus.ERROR, Policy.bind("ReentrantLock.9"), t)); //$NON-NLS-1$ + } } public interface IFlushOperation { |