diff --git a/apps/dokploy/components/dashboard/settings/servers/actions/show-dokploy-actions.tsx b/apps/dokploy/components/dashboard/settings/servers/actions/show-dokploy-actions.tsx index 2bafe7e64..42b73cf59 100644 --- a/apps/dokploy/components/dashboard/settings/servers/actions/show-dokploy-actions.tsx +++ b/apps/dokploy/components/dashboard/settings/servers/actions/show-dokploy-actions.tsx @@ -23,6 +23,8 @@ export const ShowDokployActions = () => { const { mutateAsync: cleanRedis } = api.settings.cleanRedis.useMutation(); const { mutateAsync: reloadRedis } = api.settings.reloadRedis.useMutation(); + const { mutateAsync: cleanAllDeploymentQueue } = + api.settings.cleanAllDeploymentQueue.useMutation(); return ( @@ -87,6 +89,21 @@ export const ShowDokployActions = () => { Clean Redis + { + await cleanAllDeploymentQueue() + .then(() => { + toast.success("Deployment queue cleaned"); + }) + .catch(() => { + toast.error("Error cleaning deployment queue"); + }); + }} + > + Clean all deployment queue + + { diff --git a/apps/dokploy/server/api/routers/settings.ts b/apps/dokploy/server/api/routers/settings.ts index 5082114cd..cbf6ba56c 100644 --- a/apps/dokploy/server/api/routers/settings.ts +++ b/apps/dokploy/server/api/routers/settings.ts @@ -64,6 +64,7 @@ import { projects, server, } from "@/server/db/schema"; +import { cleanAllDeploymentQueue } from "@/server/queues/queueSetup"; import { removeJob, schedule } from "@/server/utils/backup"; import packageInfo from "../../../package.json"; import { appRouter } from "../root"; @@ -115,6 +116,12 @@ export const settingsRouter = createTRPCRouter({ return true; }), + cleanAllDeploymentQueue: adminProcedure.mutation(async () => { + if (IS_CLOUD) { + return true; + } + return cleanAllDeploymentQueue(); + }), reloadTraefik: adminProcedure .input(apiServerSchema) .mutation(async ({ input }) => { diff --git a/apps/dokploy/server/queues/queueSetup.ts b/apps/dokploy/server/queues/queueSetup.ts index d1a0acf58..3900a1a77 100644 --- a/apps/dokploy/server/queues/queueSetup.ts +++ b/apps/dokploy/server/queues/queueSetup.ts @@ -3,6 +3,7 @@ import { execAsyncRemote, } from "@dokploy/server/utils/process/execAsync"; import { Queue } from "bullmq"; +import { deploymentWorker } from "./deployments-queue"; import { redisConfig } from "./redis-connection"; const myQueue = new Queue("deployments", { @@ -44,6 +45,11 @@ export const cleanQueuesByApplication = async (applicationId: string) => { } }; +export const cleanAllDeploymentQueue = async () => { + deploymentWorker.cancelAllJobs("User requested cancellation"); + return true; +}; + export const cleanQueuesByCompose = async (composeId: string) => { const jobs = await myQueue.getJobs(["waiting", "delayed"]);