UNPKG

@grouparoo/core

Version:
59 lines (58 loc) 3.65 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ResqueInitializer = void 0; const actionhero_1 = require("actionhero"); const pluginDetails_1 = require("../modules/pluginDetails"); const reset_1 = require("../modules/reset"); const grouparooVersionKey = "grouparoo:version"; let taskRecheckInterval; class ResqueInitializer extends actionhero_1.Initializer { constructor() { super(); this.name = `@grouparoo/resque`; this.loadPriority = 1000; this.startPriority = 100; } async initialize() { actionhero_1.route.registerRoute("get", "/v:apiVersion/resque/redisInfo", "resque:redisInfo"); actionhero_1.route.registerRoute("get", "/v:apiVersion/resque/resqueDetails", "resque:resqueDetails"); actionhero_1.route.registerRoute("get", "/v:apiVersion/resque/queued", "resque:queued"); actionhero_1.route.registerRoute("get", "/v:apiVersion/resque/loadWorkerQueues", "resque:loadWorkerQueues"); actionhero_1.route.registerRoute("get", "/v:apiVersion/resque/resqueFailedCount", "resque:resqueFailedCount"); actionhero_1.route.registerRoute("get", "/v:apiVersion/resque/resqueFailed", "resque:resqueFailed"); actionhero_1.route.registerRoute("get", "/v:apiVersion/resque/delayedjobs", "resque:delayedjobs"); actionhero_1.route.registerRoute("get", "/v:apiVersion/resque/locks", "resque:locks"); actionhero_1.route.registerRoute("post", "/v:apiVersion/resque/removeFailed", "resque:removeFailed"); actionhero_1.route.registerRoute("post", "/v:apiVersion/resque/retryAndRemoveFailed", "resque:retryAndRemoveFailed"); actionhero_1.route.registerRoute("post", "/v:apiVersion/resque/removeAllFailed", "resque:removeAllFailed"); actionhero_1.route.registerRoute("post", "/v:apiVersion/resque/retryAndRemoveAllFailed", "resque:retryAndRemoveAllFailed"); actionhero_1.route.registerRoute("post", "/v:apiVersion/resque/forceCleanWorker", "resque:forceCleanWorker"); actionhero_1.route.registerRoute("post", "/v:apiVersion/resque/delQueue", "resque:delQueue"); actionhero_1.route.registerRoute("post", "/v:apiVersion/resque/delDelayed", "resque:delDelayed"); actionhero_1.route.registerRoute("post", "/v:apiVersion/resque/runDelayed", "resque:runDelayed"); actionhero_1.route.registerRoute("post", "/v:apiVersion/resque/delLock", "resque:delLock"); } async start() { const delay = 1000 * 60 * 60 * 1; // 1 hour taskRecheckInterval = setInterval(this.recheckPeriodicTasks, delay); const client = actionhero_1.api.redis.clients.client; const currentVersion = (0, pluginDetails_1.getCoreVersion)(); const previousVersion = await client.get(grouparooVersionKey); if (currentVersion !== previousVersion) await reset_1.Reset.clearRedis(); await client.set(grouparooVersionKey, currentVersion); } async stop() { clearInterval(taskRecheckInterval); } async recheckPeriodicTasks() { var _a, _b; if ((_b = (_a = actionhero_1.api === null || actionhero_1.api === void 0 ? void 0 : actionhero_1.api.resque) === null || _a === void 0 ? void 0 : _a.scheduler) === null || _b === void 0 ? void 0 : _b.leader) { const taskNames = await actionhero_1.task.enqueueAllRecurrentTasks(); (0, actionhero_1.log)(`Ensuring periodic tasks are enqueued. ${taskNames.length > 0 ? `Added missing: ${taskNames.join(", ")}.` : "None missing."}`); } } } exports.ResqueInitializer = ResqueInitializer;