fix(workers): skip background jobs when required tables are missing

This commit is contained in:
2026-01-28 17:05:00 +00:00
parent 83d7e1a465
commit 4043d69452
4 changed files with 82 additions and 15 deletions

View File

@@ -2,17 +2,31 @@ import { and, eq, lt } from 'drizzle-orm';
import { db } from '../db/client';
import { recordings } from '../db/schema';
import { hasRequiredTables } from '../utils/db-schema';
const STALE_RECORDING_SECONDS = Number(process.env.RECORDING_STALE_SECONDS ?? 60 * 30);
export const startRecordingsWorker = (): void => {
const intervalMs = Number(process.env.RECORDING_WORKER_INTERVAL_MS ?? 30_000);
const requiredTables = ['recordings'];
setInterval(() => {
reconcileStaleRecordings().catch((error) => {
console.error('recordings worker failed', error);
});
}, intervalMs);
void (async () => {
const ready = await hasRequiredTables(requiredTables);
if (!ready) {
console.warn(
`[recordings worker] skipped startup because required tables are missing (${requiredTables.join(', ')}). Run migrations and restart.`,
);
return;
}
setInterval(() => {
reconcileStaleRecordings().catch((error) => {
console.error('recordings worker failed', error);
});
}, intervalMs);
})().catch((error) => {
console.error('recordings worker failed to initialize', error);
});
};
const reconcileStaleRecordings = async (): Promise<void> => {