issue just one "too many uncommitted documents" per leaked test project

This commit is contained in:
peter
2015-01-14 11:05:14 +01:00
parent 78659a81d3
commit 16d1c3709b
2 changed files with 6 additions and 0 deletions
@@ -66,6 +66,7 @@ public abstract class PsiDocumentManagerBase extends PsiDocumentManager implemen
private final DocumentCommitProcessor myDocumentCommitProcessor;
protected final Set<Document> myUncommittedDocuments = ContainerUtil.newConcurrentSet();
private final Map<Document, Pair<CharSequence, Long>> 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();
@@ -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);
}