From aa794d5671eb7d0e485df0dfe3aa1b77810dbab8 Mon Sep 17 00:00:00 2001 From: peter Date: Thu, 9 Jun 2016 13:46:28 +0200 Subject: [PATCH] [^cdr] fix deadlock during background document commit --- .../src/com/intellij/psi/impl/DocumentCommitThread.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/platform/core-impl/src/com/intellij/psi/impl/DocumentCommitThread.java b/platform/core-impl/src/com/intellij/psi/impl/DocumentCommitThread.java index 7f5bb5abca6f..997bd59c37aa 100644 --- a/platform/core-impl/src/com/intellij/psi/impl/DocumentCommitThread.java +++ b/platform/core-impl/src/com/intellij/psi/impl/DocumentCommitThread.java @@ -559,11 +559,12 @@ public class DocumentCommitThread implements Runnable, Disposable, DocumentCommi return; } + boolean canceled = false; try { if (documentManager.isCommitted(document)) return; if (!task.isStillValid()) { - task.cancel("Task invalidated", DocumentCommitThread.this); + canceled = true; return; } @@ -586,6 +587,9 @@ public class DocumentCommitThread implements Runnable, Disposable, DocumentCommi } finally { lock.unlock(); + if (canceled) { + task.cancel("Task invalidated", DocumentCommitThread.this); + } } } };