fix(parallels): keep fresh malformed package locks

This commit is contained in:
Vincent Koc
2026-06-20 18:10:32 +02:00
parent 165440117e
commit 60159b9f00
2 changed files with 12 additions and 2 deletions

View File

@@ -248,7 +248,7 @@ async function removeStalePackageLock(lockDir: string, staleMs: number): Promise
return;
}
const ageMs = Date.now() - ((await stat(lockDir).catch(() => undefined))?.mtimeMs ?? Date.now());
if (owner || ageMs >= staleMs) {
if (owner?.pid !== undefined || staleMs <= 0 || ageMs >= staleMs) {
await rm(lockDir, { force: true, recursive: true }).catch(() => undefined);
}
}

View File

@@ -445,7 +445,7 @@ describe("Parallels smoke model selection", () => {
expect(retained).toBe(`${"a".repeat(2)}${"b".repeat(10)}`);
});
it("reclaims package locks with malformed owner pids", async () => {
it("keeps fresh package locks with malformed owner pids", async () => {
const lockDir = makeTempDir(tempDirs, "openclaw-parallels-package-lock-");
mkdirSync(lockDir, { recursive: true });
writeFileSync(join(lockDir, "owner.json"), '{"pid":-1,"token":"stale"}\n');
@@ -457,6 +457,16 @@ describe("Parallels smoke model selection", () => {
await packageArtifactTesting.removeStalePackageLock(lockDir, 2 * 60 * 60_000);
expect(existsSync(lockDir)).toBe(true);
});
it("reclaims stale package locks with malformed owner pids", async () => {
const lockDir = makeTempDir(tempDirs, "openclaw-parallels-package-lock-");
mkdirSync(lockDir, { recursive: true });
writeFileSync(join(lockDir, "owner.json"), '{"pid":-1,"token":"stale"}\n');
await packageArtifactTesting.removeStalePackageLock(lockDir, 0);
expect(existsSync(lockDir)).toBe(false);
});