@grouparoo/core
Version:
The Grouparoo Core
59 lines (58 loc) • 3.65 kB
JavaScript
;
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;