From d5f9346434251991a8b9d3c794f4b08c3027d631 Mon Sep 17 00:00:00 2001 From: David Hasani Date: Thu, 9 Jan 2025 16:23:04 -0800 Subject: [PATCH 1/5] fix(amazonq): add retry on IOException --- .../services/codemodernizer/CodeModernizerSession.kt | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/CodeModernizerSession.kt b/plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/CodeModernizerSession.kt index 973ac136ed5..50ec1a935d5 100644 --- a/plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/CodeModernizerSession.kt +++ b/plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/CodeModernizerSession.kt @@ -61,6 +61,7 @@ import java.net.ConnectException import java.net.SocketTimeoutException import java.net.UnknownHostException import java.nio.file.Path +import java.time.Duration import java.time.Instant import java.util.Base64 import java.util.concurrent.CancellationException @@ -408,8 +409,10 @@ class CodeModernizerSession( UnknownHostException::class, SocketTimeoutException::class, HttpRequests.HttpStatusException::class, - ConnectException::class - ) + ConnectException::class, + IOException::class, + ), + maxDuration = Duration.ofMinutes(5) ) { clientAdaptor.uploadArtifactToS3( createUploadUrlResponse.uploadUrl(), From e104077e9dd11dd1e1ccbeca573201dedf975422 Mon Sep 17 00:00:00 2001 From: David Hasani Date: Thu, 9 Jan 2025 17:16:15 -0800 Subject: [PATCH 2/5] fix test --- .../codemodernizer/CodeWhispererCodeModernizerSessionTest.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/amazonq/codetransform/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codemodernizer/CodeWhispererCodeModernizerSessionTest.kt b/plugins/amazonq/codetransform/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codemodernizer/CodeWhispererCodeModernizerSessionTest.kt index bf0edb78620..946fd9cec06 100644 --- a/plugins/amazonq/codetransform/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codemodernizer/CodeWhispererCodeModernizerSessionTest.kt +++ b/plugins/amazonq/codetransform/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codemodernizer/CodeWhispererCodeModernizerSessionTest.kt @@ -478,11 +478,11 @@ class CodeWhispererCodeModernizerSessionTest : CodeWhispererCodeModernizerTestBa } @Test - fun `CodeModernizer cannot upload payload due to unknown issue`() = runTest { + fun `CodeModernizer cannot upload payload due to client-side issue`() = runTest { doReturn(ZipCreationResult.Succeeded(File("./tst-resources/codemodernizer/test.txt"))) .whenever(testSessionContextSpy).createZipWithModuleFiles(any()) doReturn(exampleCreateUploadUrlResponse).whenever(clientAdaptorSpy).createGumbyUploadUrl(any()) - doAnswer { throw IOException("mock exception") }.whenever(clientAdaptorSpy).uploadArtifactToS3(any(), any(), any(), any(), any()) + doAnswer { throw Exception("mock client-side exception") }.whenever(clientAdaptorSpy).uploadArtifactToS3(any(), any(), any(), any(), any()) val result = testSessionSpy.createModernizationJob(MavenCopyCommandsResult.Success(File("./mock/path/"))) assertEquals(CodeModernizerStartJobResult.ZipUploadFailed(UploadFailureReason.OTHER("mock exception")), result) verify(testSessionStateSpy, times(1)).putJobHistory(any(), eq(TransformationStatus.FAILED), any(), any()) From 05b97c255d6bae2a57f25ab3a7265a11af781549 Mon Sep 17 00:00:00 2001 From: David Hasani Date: Thu, 9 Jan 2025 18:52:53 -0800 Subject: [PATCH 3/5] update test --- .../codemodernizer/CodeWhispererCodeModernizerSessionTest.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/amazonq/codetransform/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codemodernizer/CodeWhispererCodeModernizerSessionTest.kt b/plugins/amazonq/codetransform/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codemodernizer/CodeWhispererCodeModernizerSessionTest.kt index 946fd9cec06..bf0edb78620 100644 --- a/plugins/amazonq/codetransform/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codemodernizer/CodeWhispererCodeModernizerSessionTest.kt +++ b/plugins/amazonq/codetransform/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codemodernizer/CodeWhispererCodeModernizerSessionTest.kt @@ -478,11 +478,11 @@ class CodeWhispererCodeModernizerSessionTest : CodeWhispererCodeModernizerTestBa } @Test - fun `CodeModernizer cannot upload payload due to client-side issue`() = runTest { + fun `CodeModernizer cannot upload payload due to unknown issue`() = runTest { doReturn(ZipCreationResult.Succeeded(File("./tst-resources/codemodernizer/test.txt"))) .whenever(testSessionContextSpy).createZipWithModuleFiles(any()) doReturn(exampleCreateUploadUrlResponse).whenever(clientAdaptorSpy).createGumbyUploadUrl(any()) - doAnswer { throw Exception("mock client-side exception") }.whenever(clientAdaptorSpy).uploadArtifactToS3(any(), any(), any(), any(), any()) + doAnswer { throw IOException("mock exception") }.whenever(clientAdaptorSpy).uploadArtifactToS3(any(), any(), any(), any(), any()) val result = testSessionSpy.createModernizationJob(MavenCopyCommandsResult.Success(File("./mock/path/"))) assertEquals(CodeModernizerStartJobResult.ZipUploadFailed(UploadFailureReason.OTHER("mock exception")), result) verify(testSessionStateSpy, times(1)).putJobHistory(any(), eq(TransformationStatus.FAILED), any(), any()) From 7d5c6cf30e198c8e23c4110530678c3c096c43f0 Mon Sep 17 00:00:00 2001 From: David Hasani Date: Thu, 9 Jan 2025 19:57:31 -0800 Subject: [PATCH 4/5] update test --- .../CodeWhispererCodeModernizerSessionTest.kt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/plugins/amazonq/codetransform/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codemodernizer/CodeWhispererCodeModernizerSessionTest.kt b/plugins/amazonq/codetransform/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codemodernizer/CodeWhispererCodeModernizerSessionTest.kt index bf0edb78620..246ac636737 100644 --- a/plugins/amazonq/codetransform/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codemodernizer/CodeWhispererCodeModernizerSessionTest.kt +++ b/plugins/amazonq/codetransform/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codemodernizer/CodeWhispererCodeModernizerSessionTest.kt @@ -478,13 +478,13 @@ class CodeWhispererCodeModernizerSessionTest : CodeWhispererCodeModernizerTestBa } @Test - fun `CodeModernizer cannot upload payload due to unknown issue`() = runTest { + fun `CodeModernizer cannot upload payload due to unknown client-side issue`() = runTest { doReturn(ZipCreationResult.Succeeded(File("./tst-resources/codemodernizer/test.txt"))) .whenever(testSessionContextSpy).createZipWithModuleFiles(any()) doReturn(exampleCreateUploadUrlResponse).whenever(clientAdaptorSpy).createGumbyUploadUrl(any()) - doAnswer { throw IOException("mock exception") }.whenever(clientAdaptorSpy).uploadArtifactToS3(any(), any(), any(), any(), any()) + doAnswer { throw Exception("mock client-side exception") }.whenever(clientAdaptorSpy).uploadArtifactToS3(any(), any(), any(), any(), any()) val result = testSessionSpy.createModernizationJob(MavenCopyCommandsResult.Success(File("./mock/path/"))) - assertEquals(CodeModernizerStartJobResult.ZipUploadFailed(UploadFailureReason.OTHER("mock exception")), result) + assertEquals(CodeModernizerStartJobResult.ZipUploadFailed(UploadFailureReason.OTHER("mock client-side exception")), result) verify(testSessionStateSpy, times(1)).putJobHistory(any(), eq(TransformationStatus.FAILED), any(), any()) assertEquals(testSessionStateSpy.currentJobStatus, TransformationStatus.FAILED) } From 5a3dbf18a665a23261bc8bd0bf7cc769b99cda33 Mon Sep 17 00:00:00 2001 From: David Hasani Date: Thu, 9 Jan 2025 22:30:44 -0800 Subject: [PATCH 5/5] fix detekt --- .../codemodernizer/CodeWhispererCodeModernizerSessionTest.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/plugins/amazonq/codetransform/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codemodernizer/CodeWhispererCodeModernizerSessionTest.kt b/plugins/amazonq/codetransform/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codemodernizer/CodeWhispererCodeModernizerSessionTest.kt index 246ac636737..4623edb2ff5 100644 --- a/plugins/amazonq/codetransform/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codemodernizer/CodeWhispererCodeModernizerSessionTest.kt +++ b/plugins/amazonq/codetransform/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codemodernizer/CodeWhispererCodeModernizerSessionTest.kt @@ -67,7 +67,6 @@ import software.aws.toolkits.jetbrains.utils.rules.HeavyJavaCodeInsightTestFixtu import software.aws.toolkits.jetbrains.utils.rules.addFileToModule import java.io.File import java.io.FileInputStream -import java.io.IOException import java.net.ConnectException import java.util.Base64 import java.util.zip.ZipFile