feat: add metadata catalog cleanup commands
This commit is contained in:
@@ -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");
|
||||
});
|
||||
Reference in New Issue
Block a user