From 5dc3290ea3619af3e54f0712d498d6a32730b68e Mon Sep 17 00:00:00 2001 From: Aleksey Pivovarov Date: Wed, 24 Apr 2019 21:52:00 +0300 Subject: [PATCH] vcs: do not fire Topic events while holding lock Even if listeners themselves are harmless, `MessageBusImpl.pumpMessages` can pump another event from another topic synchronously, causing a deadlock. GitOrigin-RevId: c98cf2e511f36f64ce3073993d4b06b3c68045c0 --- .../src/com/intellij/dvcs/repo/VcsRepositoryManager.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platform/dvcs-impl/src/com/intellij/dvcs/repo/VcsRepositoryManager.java b/platform/dvcs-impl/src/com/intellij/dvcs/repo/VcsRepositoryManager.java index 9ae7fb74cf90..9ecaf2453afc 100644 --- a/platform/dvcs-impl/src/com/intellij/dvcs/repo/VcsRepositoryManager.java +++ b/platform/dvcs-impl/src/com/intellij/dvcs/repo/VcsRepositoryManager.java @@ -202,11 +202,11 @@ public class VcsRepositoryManager implements Disposable, VcsListener { finally { REPO_LOCK.writeLock().unlock(); } - BackgroundTaskUtil.syncPublisher(myProject, VCS_REPOSITORY_MAPPING_UPDATED).mappingChanged(); } finally { MODIFY_LOCK.unlock(); } + BackgroundTaskUtil.syncPublisher(myProject, VCS_REPOSITORY_MAPPING_UPDATED).mappingChanged(); } @NotNull