diff --git a/apps/media-worker/src/produce.ts b/apps/media-worker/src/produce.ts index aa3b053..94ab253 100644 --- a/apps/media-worker/src/produce.ts +++ b/apps/media-worker/src/produce.ts @@ -12,6 +12,7 @@ * Everything else is env parity with the API's storage (S3_ENDPOINT/S3_ACCESS_KEY/ * S3_SECRET_KEY/S3_BUCKET/S3_KEK) and DATABASE_URL for the job tables. */ +import { mkdirSync } from "node:fs"; import pino from "pino"; import { Pool as PgPool } from "pg"; import { laneFromEnv, resolveProduceFont } from "./env"; @@ -24,12 +25,14 @@ const logger = pino({ level: process.env.LOG_LEVEL ?? "info" }); export async function startProduceWorker(): Promise<{ runner: ProduceRunner; pool: PgPool }> { const lane = laneFromEnv(process.env.MEDIA_WORKER_LANE); const fontFile = resolveProduceFont(process.env.MEDIA_PRODUCE_FONT); + const scratchRoot = process.env.MEDIA_SCRATCH_DIR ?? "/var/tmp/media-worker/produce"; + mkdirSync(scratchRoot, { recursive: true }); const pool = new PgPool({ connectionString: process.env.DATABASE_URL }); const runner = new ProduceRunner({ jobs: new PostgresProduceJobStore(pool), storage: new WorkerS3Storage(workerStorageConfigFromEnv()), fontFile, - scratchRoot: process.env.MEDIA_SCRATCH_DIR ?? "/var/tmp/media-worker/produce", + scratchRoot, lane, redactor: { redact: () => "[produce stderr redacted]" }, onStderr: (message) => logger.warn({ message }, "ffmpeg stderr"),