From 8e1a5de86e1caf7a941874a30745eada70bc1fdc Mon Sep 17 00:00:00 2001 From: Lei Gao Date: Tue, 15 Apr 2025 21:42:51 -0700 Subject: [PATCH 1/2] properly handle connection refused --- .../amazonq/project/ProjectContextProvider.kt | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/project/ProjectContextProvider.kt b/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/project/ProjectContextProvider.kt index 75ab0df4f46..43eb51441e4 100644 --- a/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/project/ProjectContextProvider.kt +++ b/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/project/ProjectContextProvider.kt @@ -123,11 +123,19 @@ class ProjectContextProvider(val project: Project, private val encoderServer: En } retryCount.incrementAndGet() } catch (e: Exception) { - logger.warn(e) { "failed to init project context" } if (e.stackTraceToString().contains("Connection refused")) { - retryCount.incrementAndGet() - delay(10000) + if (encoderServer.isNodeProcessRunning()) { + // there is a chance that client throws java.net.ConnectException: Connection refused + // in this case, the server is busy doing tree sitter parsing + // and will be responsive later once it goes past the tree sitter parsing phrase. + // Long term solution is to move encode server to LSP protocol + return + } else { + retryCount.incrementAndGet() + delay(10000) + } } else { + logger.warn(e) { "failed to init project context" } return } } From bb36408d0dc088fc4617b7112ad58ae7e318edcd Mon Sep 17 00:00:00 2001 From: Lei Gao Date: Tue, 15 Apr 2025 22:50:26 -0700 Subject: [PATCH 2/2] warn log --- .../services/amazonq/project/ProjectContextProvider.kt | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/project/ProjectContextProvider.kt b/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/project/ProjectContextProvider.kt index 43eb51441e4..22154f51e55 100644 --- a/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/project/ProjectContextProvider.kt +++ b/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/project/ProjectContextProvider.kt @@ -125,12 +125,9 @@ class ProjectContextProvider(val project: Project, private val encoderServer: En } catch (e: Exception) { if (e.stackTraceToString().contains("Connection refused")) { if (encoderServer.isNodeProcessRunning()) { - // there is a chance that client throws java.net.ConnectException: Connection refused - // in this case, the server is busy doing tree sitter parsing - // and will be responsive later once it goes past the tree sitter parsing phrase. - // Long term solution is to move encode server to LSP protocol return } else { + logger.warn(e) { "project context process quit unexpectedly" } retryCount.incrementAndGet() delay(10000) }