From 9d5d317d2277bd893c45eab3437652a2270710a9 Mon Sep 17 00:00:00 2001 From: dolong2 Date: Wed, 12 Aug 2026 08:59:21 +0900 Subject: [PATCH 1/2] =?UTF-8?q?[refac]=20=EC=9D=B4=EB=AF=B8=EC=A7=80=20?= =?UTF-8?q?=EB=B9=8C=EB=93=9C=20=ED=83=80=EC=9E=84=EC=95=84=EC=9B=83?= =?UTF-8?q?=EC=9D=84=2030=EB=B6=84=EC=9C=BC=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../application/service/impl/RefreshApplicationServiceImpl.kt | 2 +- .../global/thirdparty/docker/DockerCommandExecutor.kt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/kotlin/com/dcd/server/core/domain/application/service/impl/RefreshApplicationServiceImpl.kt b/src/main/kotlin/com/dcd/server/core/domain/application/service/impl/RefreshApplicationServiceImpl.kt index 93d1b8a4..3755912c 100644 --- a/src/main/kotlin/com/dcd/server/core/domain/application/service/impl/RefreshApplicationServiceImpl.kt +++ b/src/main/kotlin/com/dcd/server/core/domain/application/service/impl/RefreshApplicationServiceImpl.kt @@ -19,7 +19,7 @@ class RefreshApplicationServiceImpl( private val deleteApplicationDirectoryService: DeleteApplicationDirectoryService, private val queryVolumePort: QueryVolumePort ) : RefreshApplicationService { - @Lock("#application.id", waitTime = 1000 * 10, leaseTime = 1000 * 60 * 3) + @Lock("#application.id", waitTime = 1000 * 10, leaseTime = 1000 * 60 * 30) override suspend fun refresh(application: Application) { val applicationType = application.applicationType when(applicationType) { diff --git a/src/main/kotlin/com/dcd/server/infrastructure/global/thirdparty/docker/DockerCommandExecutor.kt b/src/main/kotlin/com/dcd/server/infrastructure/global/thirdparty/docker/DockerCommandExecutor.kt index 57132896..dcea6cbd 100644 --- a/src/main/kotlin/com/dcd/server/infrastructure/global/thirdparty/docker/DockerCommandExecutor.kt +++ b/src/main/kotlin/com/dcd/server/infrastructure/global/thirdparty/docker/DockerCommandExecutor.kt @@ -191,7 +191,7 @@ class DockerCommandExecutor( super.onNext(item) } }) - .awaitCompletion(120, java.util.concurrent.TimeUnit.SECONDS) + .awaitCompletion(30, TimeUnit.MINUTES) } catch (e: Exception) { throw DockerCommandException(application, FailureCase.IMAGE_BUILD_FAILURE, e.message) } From a673e2411d88394e7d23d2de31958dac09f01dbf Mon Sep 17 00:00:00 2001 From: dolong2 Date: Wed, 12 Aug 2026 09:00:06 +0900 Subject: [PATCH 2/2] =?UTF-8?q?[feat]=20=EC=9D=B4=EB=AF=B8=EC=A7=80=20?= =?UTF-8?q?=EB=B9=8C=EB=93=9C=EC=8B=9C=20=ED=83=80=EC=9E=84=EC=95=84?= =?UTF-8?q?=EC=9B=83=EC=9D=B4=20=EB=B0=9C=EC=83=9D=ED=95=98=EB=A9=B4=20?= =?UTF-8?q?=EC=98=88=EC=99=B8=EB=A5=BC=20=EB=8D=98=EC=A7=80=EB=8A=94=20?= =?UTF-8?q?=EB=A1=9C=EC=A7=81=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../global/thirdparty/docker/DockerCommandExecutor.kt | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/main/kotlin/com/dcd/server/infrastructure/global/thirdparty/docker/DockerCommandExecutor.kt b/src/main/kotlin/com/dcd/server/infrastructure/global/thirdparty/docker/DockerCommandExecutor.kt index dcea6cbd..2da91dbc 100644 --- a/src/main/kotlin/com/dcd/server/infrastructure/global/thirdparty/docker/DockerCommandExecutor.kt +++ b/src/main/kotlin/com/dcd/server/infrastructure/global/thirdparty/docker/DockerCommandExecutor.kt @@ -182,7 +182,7 @@ class DockerCommandExecutor( override fun buildImage(application: Application) { val dockerfilePath = "./${application.directoryName}/Dockerfile" try { - dockerClient.buildImageCmd() + val completed = dockerClient.buildImageCmd() .withDockerfile(java.io.File(dockerfilePath)) .withTags(setOf("${application.containerName}:${application.version}")) .exec(object : BuildImageResultCallback() { @@ -192,6 +192,11 @@ class DockerCommandExecutor( } }) .awaitCompletion(30, TimeUnit.MINUTES) + if (!completed) { + throw DockerCommandException(application, FailureCase.IMAGE_BUILD_FAILURE, "이미지 빌드중 타임아웃이 발생함.") + } + } catch (e: DockerCommandException) { + throw e } catch (e: Exception) { throw DockerCommandException(application, FailureCase.IMAGE_BUILD_FAILURE, e.message) }