earendil-works/pi · error · RangeError
writerLease.ttlMs must be positive
Error message
writerLease.ttlMs must be positive
What it means
Error "writerLease.ttlMs must be positive" thrown in earendil-works/pi.
Source
Thrown at packages/session-backends/sqlite-node/src/sqlite/repo.ts:117
heartbeatIntervalMs?: number;
}
export interface SqliteSessionRepositoryOptions {
env: SqliteSessionRepositoryEnv;
sqlite: SqliteDatabaseFactory;
databasePath: string;
writerLease?: SqliteWriterLeaseOptions;
}
interface ResolvedWriterLeaseOptions {
ttlMs: number;
heartbeatIntervalMs: number;
}
function resolveWriterLeaseOptions(options: SqliteWriterLeaseOptions | undefined): ResolvedWriterLeaseOptions {
const ttlMs = options?.ttlMs ?? 30_000;
const heartbeatIntervalMs = options?.heartbeatIntervalMs ?? 10_000;
if (!Number.isSafeInteger(ttlMs) || ttlMs <= 0) throw new RangeError("writerLease.ttlMs must be positive");
if (!Number.isSafeInteger(heartbeatIntervalMs) || heartbeatIntervalMs <= 0 || heartbeatIntervalMs >= ttlMs) {
throw new RangeError("writerLease.heartbeatIntervalMs must be positive and less than ttlMs");
}
return { ttlMs, heartbeatIntervalMs };
}
function activeWriterError(sessionId: string): SessionError {
return new SessionError("storage", `SQLite session ${sessionId} already has an active writer`);
}
function lostWriterError(sessionId: string): SessionError {
return new SessionError("storage", `SQLite session ${sessionId} writer lease was lost`);
}
function claimWriterLease(db: SqliteDatabase, sessionId: string, options: ResolvedWriterLeaseOptions): WriterLease {
const now = Date.now();
const lease = acquireWriterLease(db, sessionId, uuidv7(), now, now + options.ttlMs);
if (!lease) throw activeWriterError(sessionId);View on GitHub (pinned to 4af9d21d3b)
Solutions
- Set writerLease.ttlMs to a positive number.
When it happens
Trigger: Thrown at packages/session-backends/sqlite-node/src/sqlite/repo.ts:117 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of earendil-works/pi@4af9d21d3b (2026-08-24).
Data as JSON: /api/errors/3f49dc2beffd126e.
Report an issue: GitHub.