fix: use updateJob to replace repeatable schedule job on update in cloud

Fixes #5233. Updating an enabled schedule (cron/timezone change) called
schedule() (create-backup), which only adds a new repeatable job and
never removes the one registered under the old cron pattern, leaving
an orphaned BullMQ job running in Redis indefinitely. Switched to
updateJob() (update-backup), which looks up the currently registered
repeatable pattern, removes it, then re-adds — same pattern already
used in backup.ts for backups.
This commit is contained in:
Mauricio Siu 2026-09-01 01:26:15 -06:00
parent a63157cd51
commit 91bcf88df9

View File

@ -25,7 +25,7 @@ import { asc, desc, eq } from "drizzle-orm";
import { z } from "zod";
import { audit } from "@/server/api/utils/audit";
import { assertScheduledJobLimit } from "@/server/api/utils/plan-limits";
import { removeJob, schedule } from "@/server/utils/backup";
import { removeJob, schedule, updateJob } from "@/server/utils/backup";
import { createTRPCRouter, protectedProcedure } from "../trpc";
export const scheduleRouter = createTRPCRouter({
@ -130,7 +130,7 @@ export const scheduleRouter = createTRPCRouter({
if (IS_CLOUD) {
if (updatedSchedule?.enabled) {
schedule({
await updateJob({
scheduleId: updatedSchedule.scheduleId,
type: "schedule",
cronSchedule: updatedSchedule.cronExpression,