UNPKG

pipeproc

Version:

Multi-process log processing for nodejs

66 lines (65 loc) 2.25 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const debug_1 = __importDefault(require("debug")); const transaction_1 = require("./transaction"); const resumeDisableProc_1 = require("./resumeDisableProc"); const d = debug_1.default("pipeproc:node"); function reclaimProc(db, activeProcs, procName, callback) { const myProc = activeProcs.find(p => p.name === procName); if (!myProc) { return callback(new Error("invalid_proc")); } if (myProc.status === "disabled") { return callback(new Error("proc_is_disabled")); } if (myProc.lastAckedRange === myProc.lastClaimedRange) { return callback(new Error("nothing_to_reclaim")); } d("reclaiming proc:", myProc.name); const tx = transaction_1.transaction(db); const prefix = `~~system~~#proc#${myProc.topic}#${myProc.name}#`; tx.add([{ key: `${prefix}lastClaimedRange`, value: myProc.previousClaimedRange }, { key: `${prefix}reclaims`, value: `${myProc.reclaims + 1}` }]); tx.commitUpdate(function (err) { if (err) { callback(err); } else { myProc.lastClaimedRange = myProc.previousClaimedRange; myProc.reclaims = myProc.reclaims + 1; executeStrategy(db, activeProcs, myProc, function (strategyErr) { if (err) { callback(strategyErr); } else { callback(null, myProc.lastClaimedRange); } }); } }); } exports.reclaimProc = reclaimProc; function executeStrategy(db, activeProcs, myProc, callback) { if (myProc.onMaxReclaimsReached === "disable" && myProc.reclaims >= myProc.maxReclaims && myProc.maxReclaims !== -1) { resumeDisableProc_1.disableProc(db, activeProcs, myProc.name, function (err) { if (err) { callback(err); } else { callback(); } }); } else { callback(); } }