From 1187dc9fb1b8e65d19b7191cd03faf224b20eb0a Mon Sep 17 00:00:00 2001 From: Richard Li <742829+rli@users.noreply.github.com> Date: Fri, 16 May 2025 14:35:03 -0700 Subject: [PATCH 1/2] fix(amazonq): refreshVfs async to try to avoid slow EDT op ``` java.lang.Throwable: Slow operations are prohibited on EDT. See SlowOperations.assertSlowOperationsAreAllowed javadoc. at com.intellij.openapi.diagnostic.Logger.error(Logger.java:375) at com.intellij.util.SlowOperations.assertSlowOperationsAreAllowed(SlowOperations.java:113) at com.intellij.openapi.vfs.newvfs.persistent.FSRecordsImpl.update(FSRecordsImpl.java:756) at com.intellij.openapi.vfs.newvfs.persistent.PersistentFSImpl.findChildInfo(PersistentFSImpl.java:620) at com.intellij.openapi.vfs.newvfs.impl.VirtualDirectoryImpl.findInPersistence(VirtualDirectoryImpl.java:155) at com.intellij.openapi.vfs.newvfs.impl.VirtualDirectoryImpl.doFindChild(VirtualDirectoryImpl.java:138) at com.intellij.openapi.vfs.newvfs.impl.VirtualDirectoryImpl.findChild(VirtualDirectoryImpl.java:84) at com.intellij.openapi.vfs.newvfs.impl.VirtualDirectoryImpl.refreshAndFindChild(VirtualDirectoryImpl.java:387) at com.intellij.openapi.vfs.newvfs.VfsImplUtil.refreshAndFindFileByPath(VfsImplUtil.java:118) at com.intellij.openapi.vfs.impl.local.LocalFileSystemBase.refreshAndFindFileByPath(LocalFileSystemBase.java:67) at com.intellij.openapi.vfs.LocalFileSystem.refreshAndFindFileByIoFile(LocalFileSystem.java:45) at com.intellij.util.containers.ContainerUtil.map(ContainerUtil.java:2165) at com.intellij.openapi.vfs.VfsUtil.markDirtyAndRefresh(VfsUtil.java:489) at software.aws.toolkits.jetbrains.services.amazonq.lsp.AmazonQLanguageClientImpl.refreshVfs$lambda$33(AmazonQLanguageClientImpl.kt:416) ``` --- .../jetbrains/services/amazonq/lsp/AmazonQLanguageClientImpl.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLanguageClientImpl.kt b/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLanguageClientImpl.kt index 3f5da1b0040..93e91493633 100644 --- a/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLanguageClientImpl.kt +++ b/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLanguageClientImpl.kt @@ -413,7 +413,7 @@ class AmazonQLanguageClientImpl(private val project: Project) : AmazonQLanguageC if (currPath.startsWith(localHistoryPath)) return try { ApplicationManager.getApplication().invokeLater { - VfsUtil.markDirtyAndRefresh(false, true, true, currPath.toFile()) + VfsUtil.markDirtyAndRefresh(true, true, true, currPath.toFile()) } } catch (e: Exception) { LOG.warn(e) { "Could not refresh file" } From e017855c71b67855f8c51254eb52f788bb2391f5 Mon Sep 17 00:00:00 2001 From: Richard Li <742829+rli@users.noreply.github.com> Date: Fri, 16 May 2025 15:04:48 -0700 Subject: [PATCH 2/2] Update AmazonQLanguageClientImpl.kt --- .../services/amazonq/lsp/AmazonQLanguageClientImpl.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLanguageClientImpl.kt b/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLanguageClientImpl.kt index 93e91493633..592dbff032b 100644 --- a/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLanguageClientImpl.kt +++ b/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLanguageClientImpl.kt @@ -412,8 +412,8 @@ class AmazonQLanguageClientImpl(private val project: Project) : AmazonQLanguageC val currPath = Paths.get(path) if (currPath.startsWith(localHistoryPath)) return try { - ApplicationManager.getApplication().invokeLater { - VfsUtil.markDirtyAndRefresh(true, true, true, currPath.toFile()) + ApplicationManager.getApplication().executeOnPooledThread { + VfsUtil.markDirtyAndRefresh(false, true, true, currPath.toFile()) } } catch (e: Exception) { LOG.warn(e) { "Could not refresh file" }