fix(cli): avoid startup database lock crashes

This commit is contained in:
Johnny Eric Amancio
2026-08-06 14:09:04 +02:00
parent 835cebb476
commit 154b1ae53c
10 changed files with 208 additions and 21 deletions
@@ -1,5 +1,7 @@
import { describe, expect, test } from "bun:test"
import { Cause } from "effect"
import { LockTimeoutError, SqlError, UnknownError } from "effect/unstable/sql/SqlError"
import { EffectDrizzleQueryError } from "drizzle-orm/effect-core/errors"
import { busyMessage, isBusy } from "@/kilocode/database/sqlite-error"
describe("SQLite errors", () => {
@@ -27,4 +29,22 @@ describe("SQLite errors", () => {
expect(isBusy(error)).toBe(false)
})
test("recognizes lock timeouts wrapped by Drizzle", () => {
const error = new EffectDrizzleQueryError({
query: "update credential set value = ?",
params: ["<redacted>"],
cause: Cause.fail(
new SqlError({
reason: new LockTimeoutError({
cause: new Error("database is locked"),
message: "Failed to execute statement",
operation: "execute",
}),
}),
),
})
expect(isBusy(error)).toBe(true)
})
})