feat: add metadata catalog cleanup commands

This commit is contained in:
Codex
2026-08-28 00:37:43 +02:00
parent 79c4c925b5
commit 58ee9cffe4
19 changed files with 942 additions and 66 deletions
@@ -0,0 +1,20 @@
import { expect, test } from "vitest";
import { CatalogOperationCoordinator } from "../src/catalog/operation-coordinator.js";
test("releases earlier database reservations when a batch reservation cannot be completed", async () => {
const coordinator = new CatalogOperationCoordinator();
const releaseBusyDatabase = coordinator.reserve("database-b");
await expect(coordinator.runMany(["database-a", "database-b"], async () => "unreachable"))
.rejects.toThrow("A database operation is already in progress");
expect(await coordinator.run("database-a", async () => "available")).toBe("available");
releaseBusyDatabase();
});
test("reserves duplicate database ids only once for a batch operation", async () => {
const coordinator = new CatalogOperationCoordinator();
expect(await coordinator.runMany(["database-a", "database-a"], async () => "completed"))
.toBe("completed");
});