From 934cce75af7946d4d48f9d191f2f626570584235 Mon Sep 17 00:00:00 2001 From: Andrey Breslav Date: Tue, 18 Dec 2012 15:37:27 +0400 Subject: [PATCH] Only allow access to declarations from under a read action (to prevent dead locks) --- .../jet/plugin/caches/resolve/KotlinCacheManager.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/idea/src/org/jetbrains/jet/plugin/caches/resolve/KotlinCacheManager.java b/idea/src/org/jetbrains/jet/plugin/caches/resolve/KotlinCacheManager.java index d629a09ac3f..3f60ea6608a 100644 --- a/idea/src/org/jetbrains/jet/plugin/caches/resolve/KotlinCacheManager.java +++ b/idea/src/org/jetbrains/jet/plugin/caches/resolve/KotlinCacheManager.java @@ -17,6 +17,7 @@ package org.jetbrains.jet.plugin.caches.resolve; import com.google.common.base.Predicates; +import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.components.ServiceManager; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Key; @@ -53,6 +54,8 @@ public class KotlinCacheManager { @NotNull public KotlinDeclarationsCache getDeclarationsFromProject(@NotNull Project project) { + // To prevent dead locks, the lock below must be obtained only inside a read action + ApplicationManager.getApplication().assertReadAccessAllowed(); synchronized (declarationAnalysisLock) { return CachedValuesManager.getManager(project).getCachedValue( project,