From a884928fa854e2a99780e7849d271ae7c1500c42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=98=A4=EC=98=81=ED=9B=88?= <102127984+oyeonghun@users.noreply.github.com> Date: Wed, 7 Oct 2026 01:26:59 +0900 Subject: [PATCH] =?UTF-8?q?Fix:=20pm-relay=20=ED=85=8C=EC=8A=A4=ED=8A=B8?= =?UTF-8?q?=20=EC=A0=95=EB=A6=AC=20=EB=8B=A8=EA=B3=84=20=EA=B2=BD=ED=95=A9?= =?UTF-8?q?=20=E2=80=94=20=EB=8A=A6=EA=B2=8C=20=EC=98=AC=EB=9D=BC=EC=98=A8?= =?UTF-8?q?=20=EC=A4=91=EA=B3=84=20=EC=9E=91=EC=97=85=EC=9D=B4=2010?= =?UTF-8?q?=EB=B6=84=20=EB=8C=80=EA=B8=B0=EB=A1=9C=20=EB=82=A8=EC=95=84=20?= =?UTF-8?q?hook=20=EC=8B=9C=EA=B0=84=20=EC=A0=9C=ED=95=9C=EC=97=90=20?= =?UTF-8?q?=EA=B1=B8=EB=A6=AC=EB=8D=98=20=EA=B2=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 정리 단계가 중계 대기열을 한 번만 비웠다. 테스트가 남긴 백그라운드 PM 작업은 계획 행·예산 확인 뒤에 대기열에 올라오므로, 부하가 있으면 비운 뒤에 올라와 가져갈 워커 없이 PM_TIMEOUT_MS(기본 10분)를 기다렸다 — 전체 실행 6회 중 3회 실패(60초 제한에서도). 백그라운드 작업이 다 끝날 때까지 계속 비운다. 단독 20/20, 전체 3/3 통과(616개 전부). Co-Authored-By: Claude Opus 5.5 --- tests/pm-relay.test.ts | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/tests/pm-relay.test.ts b/tests/pm-relay.test.ts index e343815..9194dbb 100644 --- a/tests/pm-relay.test.ts +++ b/tests/pm-relay.test.ts @@ -44,8 +44,18 @@ beforeEach(async () => { }); afterEach(async () => { - clearRelayJobs(); - await drainPmJobs(); + // 테스트가 남긴 백그라운드 PM 작업은 대기열에 **늦게** 올라올 수 있다(계획 행·예산 확인을 먼저 한다). + // 한 번만 비우면 그 뒤에 올라온 작업이 가져갈 워커 없이 PM_TIMEOUT_MS(기본 10분)까지 기다려 이 정리 단계가 시간 제한에 걸렸다 + // (부하가 있을 때 전체 실행의 절반가량). 백그라운드 작업이 다 끝날 때까지 계속 비운다. + let drained = false; + const draining = drainPmJobs().then(() => { + drained = true; + }); + while (!drained) { + clearRelayJobs(); + await new Promise((r) => setTimeout(r, 20)); + } + await draining; mutableEnv.PM_PROVIDER = originalProvider; mutableEnv.PM_TIMEOUT_MS = originalTimeout; });