Environment:
- Java: JetBrains s.r.o. 25.0.2
- OS: Mac OS X aarch64
- IDE: IntelliJ IDEA 2026.1.1
- SonarQube for IDE: 12.2.0.84584
c.ij.oa.ap.ThreadingSupport$LockAccessDisallowed: Attempt to take read lock was prevented
The use of the RW lock is forbidden by `Dispatchers.UI`. This dispatcher is intended for pure UI operations, which do not interact with the IntelliJ Platform model (PSI, VFS, etc.).
The following solutions are available:
1. Consider moving the model access outside `Dispatchers.UI`. This would help to ensure that the UI is responsive.
2. Consider using legacy `Dispatchers.EDT` that permits usage of the RW lock.
at c.ij.platform.locking.impl.NestedLocksThreadingSupport.handleLockAccess(NestedLocksThreadingSupport.kt:823)
at c.ij.platform.locking.impl.NestedLocksThreadingSupport.runReadAction(NestedLocksThreadingSupport.kt:829)
at c.ij.oa.ap.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:1109)
at c.ij.oa.ap.ReadAction.computeBlocking(ReadAction.java:88)
at c.ij.oa.ap.ReadAction.runBlocking(ReadAction.java:107)
at c.ij.oa.ap.ReadAction.run(ReadAction.java:56)
at o.sl.ij.common.ui.ReadActionUtils$Companion.runReadActionSafely(ReadActionUtils.kt:36)
at o.sl.ij.common.ui.ReadActionUtils.runReadActionSafely(ReadActionUtils.kt)
at o.sl.ij.ui.nodes.IssueNode.render(IssueNode.java:66)
at o.sl.ij.ui.tree.TreeCellRenderer.customizeCellRenderer(TreeCellRenderer.java:50)
at c.ij.ui.ColoredTreeCellRenderer.rendererComponentInner(ColoredTreeCellRenderer.java:128)
at c.ij.ui.ColoredTreeCellRenderer.getTreeCellRendererComponent(ColoredTreeCellRenderer.java:60)
at c.ij.ui.tree.ui.DefaultTreeUI.getRenderer(DefaultTreeUI.java:241)
at c.ij.ui.tree.ui.DefaultTreeUI$2.getNodeDimensions(DefaultTreeUI.java:737)
at java.desktop/javax.swing.tree.AbstractLayoutCache.getNodeDimensions(AbstractLayoutCache.java:496)
at c.ij.ui.tree.ui.DefaultTreeLayoutCache.access$getNodeDimensions(DefaultTreeLayoutCache.kt:18)
at c.ij.ui.tree.ui.DefaultTreeLayoutCache$Node.getBounds(DefaultTreeLayoutCache.kt:550)
at c.ij.ui.tree.ui.DefaultTreeLayoutCache.getBounds(DefaultTreeLayoutCache.kt:196)
at java.desktop/javax.swing.plaf.basic.BasicTreeUI.getPathBounds(BasicTreeUI.java:738)
at java.desktop/javax.swing.plaf.basic.BasicTreeUI.getPathBounds(BasicTreeUI.java:731)
at c.ij.ui.tree.ui.DefaultTreeUI.getPathBounds(DefaultTreeUI.java:999)
at java.desktop/javax.swing.JTree.getPathBounds(JTree.java:2195)
at java.desktop/javax.swing.JTree$AccessibleJTree$AccessibleJTreeNode.isVisible(JTree.java:5359)
at java.desktop/javax.swing.JTree$AccessibleJTree$AccessibleJTreeNode.getAccessibleStateSet(JTree.java:4958)
at java.desktop/sun.lwawt.macosx.CAccessibility$34.call(CAccessibility.java:811)
at java.desktop/sun.lwawt.macosx.CAccessibility$34.call(CAccessibility.java:768)
at java.desktop/sun.lwawt.macosx.LWCToolkit$CallableWrapper.run(LWCToolkit.java:757)
at c.ij.util.concurrency.ChildContext$runInChildContext$1.invoke(propagation.kt:192)
at c.ij.util.concurrency.ChildContext$runInChildContext$1.invoke(propagation.kt:192)
at c.ij.util.concurrency.ChildContext.runInChildContext(propagation.kt:198)
at c.ij.util.concurrency.ChildContext.runInChildContext(propagation.kt:192)
at c.ij.util.concurrency.ContextRunnable.lambda$run$0(ContextRunnable.java:26)
at c.ij.concurrency.ThreadContext.resetThreadContext(threadContext.kt:294)
at c.ij.util.concurrency.ContextRunnable.run(ContextRunnable.java:25)