fix sync reliability and runtime handling

This commit is contained in:
Alex Getman
2026-08-12 13:48:10 +03:00
parent 70387a94ad
commit 99a22e11bd
13 changed files with 289 additions and 132 deletions
+10 -1
View File
@@ -1,5 +1,5 @@
import { describe, expect, test } from "bun:test";
import { mkdtempSync, rmSync } from "node:fs";
import { mkdirSync, mkdtempSync, rmSync, writeFileSync } from "node:fs";
import { join } from "node:path";
import { withExclusiveFileLock } from "../src/storage/secure-files.js";
@@ -11,4 +11,13 @@ describe("file locks", () => {
await expect(withExclusiveFileLock(path, async () => "second")).resolves.toBe("second");
rmSync(directory, { recursive: true, force: true });
});
test("reclaims a lock whose owner process is gone", async () => {
const directory = mkdtempSync(join(process.env.TMPDIR ?? "/tmp", "miband-lock-stale-"));
const path = join(directory, "sync.lock");
mkdirSync(`${path}.d`);
writeFileSync(join(`${path}.d`, "owner"), "pid=2147483647 time=0\n");
await expect(withExclusiveFileLock(path, async () => "reclaimed")).resolves.toBe("reclaimed");
rmSync(directory, { recursive: true, force: true });
});
});