UNPKG

openhim-core

Version:

The OpenHIM core application that provides logging and routing of http requests

114 lines (95 loc) 3.31 kB
var Q, SDC, Task, Transaction, application, config, domain, logger, os, sdc, statsdServer; Q = require("q"); Transaction = require("../model/transactions").Transaction; Task = require("../model/tasks").Task; logger = require("winston"); config = require('../config/config'); statsdServer = config.get('statsd'); application = config.get('application'); SDC = require('statsd-client'); os = require('os'); domain = (os.hostname()) + "." + application.name + ".appMetrics"; sdc = new SDC(statsdServer); exports.setAttemptNumber = function(ctx, done) { return Transaction.findOne({ _id: ctx.parentID }, function(err, transaction) { if (transaction.autoRetry) { if (transaction.autoRetryAttempt != null) { ctx.currentAttempt = transaction.autoRetryAttempt + 1; } else { ctx.currentAttempt = 1; } } return transaction.save(function(err, tx) { if (err) { logger.error("Original transaction " + transaction._id + " could not be updated: " + err); } else { logger.debug("Original transaction #" + tx._id + " Updated successfully with attempt number"); } return done(null); }); }); }; exports.updateOriginalTransaction = function(ctx, done) { return Transaction.findOne({ _id: ctx.parentID }, function(err, transaction) { transaction.childIDs.push(ctx.transactionId); transaction.wasRerun = true; return transaction.save(function(err, tx) { if (err) { logger.error("Original transaction " + transaction._id + " could not be updated: " + err); } else { logger.debug("Original transaction " + tx._id + " - Updated successfully with childID"); } return done(null, transaction); }); }); }; exports.updateTask = function(ctx, done) { return Task.findOne({ _id: ctx.taskID }, function(err, task) { task.transactions.forEach(function(tx) { if (tx.tid === ctx.parentID) { tx.rerunID = ctx.transactionId; return tx.rerunStatus = ctx.transactionStatus; } }); return task.save(function(err, task) { if (err) { logger.info("Rerun Task " + ctx.taskID + " could not be updated: " + err); } else { logger.info("Rerun Task " + ctx.taskID + " - Updated successfully with rerun transaction details."); } return done(null, task); }); }); }; /* * Koa middleware for updating original transaction with childID */ exports.koaMiddleware = function*(next) { var setAttemptNumber, startTime, updateOriginalTransaction, updateTask; if (statsdServer.enabled) { startTime = new Date(); } setAttemptNumber = Q.denodeify(exports.setAttemptNumber); (yield setAttemptNumber(this)); if (statsdServer.enabled) { sdc.timing(domain + ".rerunUpdateTransactionMiddleware.setAttemptNumber", startTime); } (yield next); if (statsdServer.enabled) { startTime = new Date(); } updateOriginalTransaction = Q.denodeify(exports.updateOriginalTransaction); (yield updateOriginalTransaction(this)); updateTask = Q.denodeify(exports.updateTask); (yield updateTask(this)); if (statsdServer.enabled) { return sdc.timing(domain + ".rerunUpdateTransactionMiddleware", startTime); } }; //# sourceMappingURL=rerunUpdateTransactionTask.js.map