earendil-works/pi · error · RangeError
writerLease.heartbeatIntervalMs must be positive and less th
Error message
writerLease.heartbeatIntervalMs must be positive and less than ttlMs
What it means
Error "writerLease.heartbeatIntervalMs must be positive and less than ttlMs" thrown in earendil-works/pi.
Source
Thrown at packages/session-backends/sqlite-node/src/sqlite/repo.ts:119
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);
return lease;
}View on GitHub (pinned to 4af9d21d3b)
Solutions
- Set writerLease.heartbeatIntervalMs to a positive value below ttlMs.
When it happens
Trigger: Thrown at packages/session-backends/sqlite-node/src/sqlite/repo.ts:119 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/46ecdca981047e1d.
Report an issue: GitHub.