UNPKG

apminsight

Version:

monitor nodejs applications

141 lines (124 loc) 3.22 kB
var logger = require("./../util/logger"); var resCodesInfo = { 701: { name: "LICENSE_EXPIRED", timeInterval: [10, 30, 60, 3 * 24 * 60], reqInterval: [1, 2, 5, 15], exhaust: 60, shutdown: 15 * 24 * 60 }, 702: { name: "LICENSE_INSTANCES_EXCEEDED", timeInterval: [10, 30, 60, 3 * 24 * 60], reqInterval: [1, 2, 5, 15], exhaust: 60, shutdown: 15 * 24 * 60 }, 703: { name: "INSTANCE_ADD_FAILED", timeInterval: [10, 20, 30], reqInterval: [1, 2, 5], exhaust: 15 }, 704: { name: "INSUFFICIENT_CREDITS", shutdown: -1 }, 900: { name: "MARKED_FOR_DELETE", timeInterval: [10, 20, 30], reqInterval: [1, 2, 5], exhaust: 15, shutdown: 3 * 24 * 60 }, 901: { name: "INVALID_AGENT", timeInterval: [10, 20, 30], reqInterval: [1, 2, 5], exhaust: 15, shutdown: 3 * 24 * 60 }, 910: { name: "UNMANAGE_AGENT" }, 911: { name: "MANAGE_AGENT" }, 0: { name: "SHUTDOWN" } }; function getRescodeMessage(resCode) { var resInfo = resCodesInfo[resCode]; if (!resInfo) { return resCode; } return resInfo.name; } function isAllowedToSendRequest(resCode, retryCounter) { var resInfo = resCodesInfo[resCode]; var timeLimit; if (!resInfo) { logger.critical(" Unknown response code ::" + resCode); return true; } if (!resInfo.timeInterval) { logger.info( " No time limit restriction for response code ::" + resCode ); return true; } for (var index = 0; index < resInfo.timeInterval.length; index++) { timeLimit = resInfo.timeInterval[index]; if (retryCounter < timeLimit) { return retryCounter % resInfo.reqInterval[index] == 0; } } if (retryCounter > timeLimit) { return retryCounter % resInfo.exhaust == 0; } return true; } function isRetryLimitExceeded(resCode, retryCounter) { if (!resCode) { return false; } var resInfo = resCodesInfo[resCode]; if (!resInfo) { logger.critical(" Unknown response code ::" + resCode); return false; } if (resInfo.shutdown && retryCounter > resInfo.shutdown) { return true; } return false; } function getRetryCounter(resCode, occuredTime) { if (!resCode || !occuredTime) { return 1; } var resInfo = resCodesInfo[resCode]; if (!resInfo) { logger.critical(" Unknown response code ::" + resCode); return 1; } if (resInfo.timeInterval) { var curTime = new Date().getTime(); var diff = (curTime - occuredTime) / (60 * 1000); return parseInt(diff); } return 1; } function isValid(resCode) { if (resCode && resCodesInfo[resCode]) { return true; } return false; } module.exports = { getRescodeMessage: getRescodeMessage, isAllowedToSendRequest: isAllowedToSendRequest, isRetryLimitExceeded: isRetryLimitExceeded, getRetryCounter: getRetryCounter, isValid: isValid };