feat: give ebook conversions their own worker timeout and register the converter

This commit is contained in:
2026-07-31 13:24:49 +02:00
parent f796c0bd97
commit 534630ab4e
2 changed files with 46 additions and 3 deletions
+5 -2
View File
@@ -12,6 +12,7 @@ import { registerIcoConverter } from './converters/ico.js';
import { registerHeicConverter } from './converters/heic.js';
import { registerFontConverter } from './converters/font.js';
import { registerDfontConverter } from './converters/dfont.js';
import { registerEbookConverter } from './converters/ebook.js';
import { findPendingJobs, markProcessing, markDone, markFailed } from './jobs/jobRepository.js';
const JOB_TIMEOUT_MS = 60000;
@@ -36,10 +37,11 @@ async function processJob(prisma, config, job) {
throw new Error(`No converter registered for ${job.sourceFormat} -> ${job.targetFormat}`);
}
const timeoutMs = entry.family === 'ebook' ? config.ebookJobTimeoutMs : JOB_TIMEOUT_MS;
const startedAt = Date.now();
await withTimeout(
entry.convert(inputFilePath, outputFilePath, { quality: job.quality, iconSize: job.iconSize }),
JOB_TIMEOUT_MS
entry.convert(inputFilePath, outputFilePath, { quality: job.quality, iconSize: job.iconSize, timeoutMs }),
timeoutMs
);
const conversionDurationSeconds = (Date.now() - startedAt) / 1000;
const { size: outputSizeBytes } = await fs.stat(outputFilePath);
@@ -86,6 +88,7 @@ async function main() {
registerHeicConverter();
registerFontConverter();
registerDfontConverter();
registerEbookConverter();
startWorker(prisma, config);
console.log(`Worker started, polling every ${config.workerPollIntervalMs}ms`);