apminsight
Version:
monitor nodejs applications
141 lines (124 loc) • 3.22 kB
JavaScript
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
};