From 16d1c3709bfb5d2520202bdc8d0fa5ee3d8dd6bb Mon Sep 17 00:00:00 2001 From: peter Date: Wed, 14 Jan 2015 10:32:31 +0100 Subject: [PATCH] issue just one "too many uncommitted documents" per leaked test project --- .../src/com/intellij/psi/impl/PsiDocumentManagerBase.java | 5 +++++ .../src/com/intellij/psi/impl/PsiDocumentManagerImpl.java | 1 + 2 files changed, 6 insertions(+) diff --git a/platform/core-impl/src/com/intellij/psi/impl/PsiDocumentManagerBase.java b/platform/core-impl/src/com/intellij/psi/impl/PsiDocumentManagerBase.java index b17d51de0c86..34241530f31a 100644 --- a/platform/core-impl/src/com/intellij/psi/impl/PsiDocumentManagerBase.java +++ b/platform/core-impl/src/com/intellij/psi/impl/PsiDocumentManagerBase.java @@ -66,6 +66,7 @@ public abstract class PsiDocumentManagerBase extends PsiDocumentManager implemen private final DocumentCommitProcessor myDocumentCommitProcessor; protected final Set myUncommittedDocuments = ContainerUtil.newConcurrentSet(); private final Map> myLastCommittedTexts = ContainerUtil.newConcurrentMap(); + protected boolean myStopTrackingDocuments; private volatile boolean myIsCommitInProgress; private final PsiToDocumentSynchronizer mySynchronizer; @@ -599,6 +600,8 @@ public abstract class PsiDocumentManagerBase extends PsiDocumentManager implemen @Override public void beforeDocumentChange(@NotNull DocumentEvent event) { + if (myStopTrackingDocuments) return; + final Document document = event.getDocument(); if (!(document instanceof DocumentWindow) && !myLastCommittedTexts.containsKey(document)) { myLastCommittedTexts.put(document, Pair.create(document.getImmutableCharSequence(), document.getModificationStamp())); @@ -642,6 +645,8 @@ public abstract class PsiDocumentManagerBase extends PsiDocumentManager implemen @Override public void documentChanged(DocumentEvent event) { + if (myStopTrackingDocuments) return; + final Document document = event.getDocument(); VirtualFile virtualFile = FileDocumentManager.getInstance().getFile(document); boolean isBulk = document instanceof DocumentEx && ((DocumentEx)document).isInBulkUpdate(); diff --git a/platform/lang-impl/src/com/intellij/psi/impl/PsiDocumentManagerImpl.java b/platform/lang-impl/src/com/intellij/psi/impl/PsiDocumentManagerImpl.java index a55442af931c..81726d53cc56 100644 --- a/platform/lang-impl/src/com/intellij/psi/impl/PsiDocumentManagerImpl.java +++ b/platform/lang-impl/src/com/intellij/psi/impl/PsiDocumentManagerImpl.java @@ -107,6 +107,7 @@ public class PsiDocumentManagerImpl extends PsiDocumentManagerBase implements Se // avoid documents piling up during batch processing if (FileDocumentManagerImpl.areTooManyDocumentsInTheQueue(myUncommittedDocuments)) { if (myUnitTestMode) { + myStopTrackingDocuments = true; try { LOG.error("Too many uncommitted documents for " + myProject + ":\n" + myUncommittedDocuments); }