From 830c9b62c416607369c930614e543d51f077df42 Mon Sep 17 00:00:00 2001 From: "Jason@HND" Date: Sat, 25 Jul 2026 03:39:02 +0900 Subject: [PATCH] fix(server): retry hub test temp cleanup on Linux ENOTEMPTY (#2233) removeRoot() already retries EBUSY/ENOTEMPTY on main; also retry EPERM and document the Linux CI teardown race. Closes #2207 --- .../server/src/server/hub/test-utils/relationship-harness.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/server/src/server/hub/test-utils/relationship-harness.ts b/packages/server/src/server/hub/test-utils/relationship-harness.ts index 819fb8d85..3fdff778a 100644 --- a/packages/server/src/server/hub/test-utils/relationship-harness.ts +++ b/packages/server/src/server/hub/test-utils/relationship-harness.ts @@ -1322,7 +1322,9 @@ export class HubRelationshipHarness { } private async removeRoot(): Promise { - const retryableCodes = new Set(["EBUSY", "ENOTEMPTY"]); + // Daemon may still flush into .paseo/projects during teardown; recursive rm + // can race and hit ENOTEMPTY/EBUSY/EPERM. Observed on Linux CI as well as macOS/Windows. + const retryableCodes = new Set(["ENOTEMPTY", "EBUSY", "EPERM"]); const attempts = 10; for (let attempt = 1; attempt <= attempts; attempt++) { try {