Перевод применения объекта "Buffer" с конструктора "new" (устаревший) на статический метод "Buffer.from", циклы "for" с асинхронными выховами переписаны на "for of"

This commit is contained in:
Mikhail Chechnev 2021-03-12 21:22:23 +03:00
parent 5e7f737cfb
commit a2fcbf11b3
9 changed files with 55 additions and 69 deletions

View File

@ -530,7 +530,7 @@ class DBConnector extends EventEmitter {
if (!sCheckResult) {
//Подготовим параметры
let putQueueData = _.cloneDeep(prms);
putQueueData.blMsg = prms.blMsg ? prms.blMsg : new Buffer("");
putQueueData.blMsg = prms.blMsg ? prms.blMsg : Buffer.from("");
putQueueData.connection = this.connection;
//Исполняем действие в БД
try {
@ -666,7 +666,7 @@ class DBConnector extends EventEmitter {
if (!sCheckResult) {
//Подготовим параметры
let setQueueMsgData = _.cloneDeep(prms);
if (!setQueueMsgData.blMsg) setQueueMsgData.blMsg = new Buffer("");
if (!setQueueMsgData.blMsg) setQueueMsgData.blMsg = Buffer.from("");
setQueueMsgData.connection = this.connection;
//Исполняем действие в БД
try {
@ -770,7 +770,7 @@ class DBConnector extends EventEmitter {
if (!sCheckResult) {
//Подготовим параметры
let setQueueRespData = _.cloneDeep(prms);
if (!setQueueRespData.blResp) setQueueRespData.blResp = new Buffer("");
if (!setQueueRespData.blResp) setQueueRespData.blResp = Buffer.from("");
setQueueRespData.connection = this.connection;
//Исполняем действие в БД
try {

View File

@ -119,7 +119,7 @@ class InQueue extends EventEmitter {
blMsg = prms.req.body && !_.isEmpty(prms.req.body) ? prms.req.body : null;
} else {
//Для GET - параметры запроса
if (!_.isEmpty(prms.req.query)) blMsg = new Buffer(JSON.stringify(prms.req.query));
if (!_.isEmpty(prms.req.query)) blMsg = Buffer.from(JSON.stringify(prms.req.query));
}
//Определимся с параметрами сообщения полученными от внешней системы
options = {

View File

@ -108,28 +108,26 @@ class Notifier extends EventEmitter {
//Выставим флаг - цикл опроса активен
this.bInSendLoop = true;
//Обходим уведомления для отправки
for (let i = 0; i < this.messages.length; i++) {
for (let message of this.messages) {
//Работаем только по неотправленным уведомлениям
if (!this.messages[i].bSent) {
if (!message.bSent) {
try {
//Отправляем
await sendMail({
mail: this.mail,
sTo: this.messages[i].sTo,
sSubject: this.messages[i].sSubject,
sMessage: this.messages[i].sMessage
sTo: message.sTo,
sSubject: message.sSubject,
sMessage: message.sMessage
});
//Протоколируем отправку
await this.logger.info(
`Сообщение с темой "${this.messages[i].sSubject}" отпрвлено ${this.messages[i].sTo}`
);
await this.logger.info(`Сообщение с темой "${message.sSubject}" отпрвлено ${message.sTo}`);
//Говорим, что отправлено
this.messages[i].bSent = true;
message.bSent = true;
} catch (e) {
await this.logger.error(
`Ошибка отправки сообщения с темой "${this.messages[i].sSubject}" для ${
this.messages[i].sTo
}: ${makeErrorText(e)}`
`Ошибка отправки сообщения с темой "${message.sSubject}" для ${message.sTo}: ${makeErrorText(
e
)}`
);
}
}

View File

@ -204,9 +204,7 @@ class OutQueue extends EventEmitter {
//Отправим уведомление об ошибке отработки в почту
await this.notifier.addMessage({
sTo: func.sErrNtfMail,
sSubject: `Ошибка обработки исходящего сообщения ${
prms.queue.nId
} сервером приложений для функции "${func.sCode}" сервиса "${service.sCode}"`,
sSubject: `Ошибка обработки исходящего сообщения ${prms.queue.nId} сервером приложений для функции "${func.sCode}" сервиса "${service.sCode}"`,
sMessage: prms.queue.sExecMsg
});
} else {
@ -372,24 +370,24 @@ class OutQueue extends EventEmitter {
//Если есть сообщения
if (Array.isArray(outMsgs) && outMsgs.length > 0) {
//Обходим их
for (let i = 0; i < outMsgs.length; i++) {
for (let outMsg of outMsgs) {
//И запускаем обработчики
if (!this.isInProgress({ nQueueId: outMsgs[i].nId })) {
if (!this.isInProgress({ nQueueId: outMsg.nId })) {
try {
this.processMessage({ queue: outMsgs[i] });
this.processMessage({ queue: outMsg });
} catch (e) {
//Фиксируем ошибку обработки сервером приложений - статус сообщения
let queue = await this.dbConn.setQueueState({
nQueueId: outMsgs[i].nId,
nQueueId: outMsg.nId,
sExecMsg: makeErrorText(e),
nIncExecCnt: NINC_EXEC_CNT_YES,
nExecState:
outMsgs[i].nExecCnt + 1 < outMsgs[i].nRetryAttempts
? outMsgs[i].nExecState
outMsg.nExecCnt + 1 < outMsg.nRetryAttempts
? outMsg.nExecState
: objQueueSchema.NQUEUE_EXEC_STATE_ERR
});
//Фиксируем ошибку обработки сервером приложений - запись в протокол работы сервера приложений
await this.logger.error(makeErrorText(e), { nQueueId: outMsgs[i].nId });
await this.logger.error(makeErrorText(e), { nQueueId: outMsg.nId });
//Если исполнение завершилось полностью и с ошибкой - расскажем об этом
if (queue.nExecState == objQueueSchema.NQUEUE_EXEC_STATE_ERR)
await this.notifyMessageProcessError({ queue });

View File

@ -252,7 +252,7 @@ const appProcess = async prms => {
options.resolveWithFullResponse = true;
let serverResp = await rqp(options);
//Сохраняем полученный ответ
prms.queue.blResp = new Buffer(serverResp.body || "");
prms.queue.blResp = Buffer.from(serverResp.body || "");
await dbConn.setQueueResp({
nQueueId: prms.queue.nId,
blResp: prms.queue.blResp,

View File

@ -103,21 +103,21 @@ class ServiceAvailableController extends EventEmitter {
this.bInDetectingLoop = true;
try {
//Обходим список сервисов для проверки
for (let i = 0; i < this.services.length; i++) {
for (let service of this.services) {
//Если сервис надо проверять на доступность и это сервис для отправки исходящих сообщений
if (
this.services[i].nUnavlblNtfSign == objServiceSchema.NUNAVLBL_NTF_SIGN_YES &&
this.services[i].nSrvType == objServiceSchema.NSRV_TYPE_SEND
service.nUnavlblNtfSign == objServiceSchema.NUNAVLBL_NTF_SIGN_YES &&
service.nSrvType == objServiceSchema.NSRV_TYPE_SEND
) {
try {
//Отправляем проверочный запрос
await rqp({ url: this.services[i].sSrvRoot, timeout: NNETWORK_CHECK_TIMEOUT });
await rqp({ url: service.sSrvRoot, timeout: NNETWORK_CHECK_TIMEOUT });
//Запрос прошел - фиксируем дату доступности и сбрасываем дату недоступности
this.services[i].dAvailable = new Date();
this.services[i].dUnAvailable = null;
service.dAvailable = new Date();
service.dUnAvailable = null;
} catch (e) {
//Зафиксируем дату и время недоступности
this.services[i].dUnAvailable = new Date();
service.dUnAvailable = new Date();
//Сформируем текст ошибки в зависимости от того, что случилось
let sError = "Неожиданная ошибка удалённого сервиса";
if (e.error) {
@ -129,71 +129,61 @@ class ServiceAvailableController extends EventEmitter {
if (e.response) {
//Нам нужны только ошибки сервера
if (String(e.response.statusCode).startsWith("5")) {
sError = `Ошибка работы удалённого сервиса: ${e.response.statusCode} - ${
e.response.statusMessage
}`;
sError = `Ошибка работы удалённого сервиса: ${e.response.statusCode} - ${e.response.statusMessage}`;
} else {
//Остальное - клиентские ошибки, но сервер-то вроде отвечает, поэтому - пропускаем
this.services[i].dUnAvailable = null;
service.dUnAvailable = null;
}
}
//Фиксируем ошибку проверки в протоколе (только если она действительно была)
if (this.services[i].dUnAvailable) {
if (service.dUnAvailable) {
await this.logger.warn(
`При проверке доступности сервиса ${this.services[i].sCode}: ${makeErrorText(
`При проверке доступности сервиса ${service.sCode}: ${makeErrorText(
new ServerError(SERR_SERVICE_UNAVAILABLE, sError)
)} (адрес - ${this.services[i].sSrvRoot})`,
{ nServiceId: this.services[i].nId }
)} (адрес - ${service.sSrvRoot})`,
{ nServiceId: service.nId }
);
}
}
//Если есть даты - будем проверять
if (this.services[i].dUnAvailable && this.services[i].dAvailable) {
if (service.dUnAvailable && service.dAvailable) {
//Выясним как долго он уже недоступен (в минутах)
let nDiffMs = this.services[i].dUnAvailable - this.services[i].dAvailable;
let nDiffMs = service.dUnAvailable - service.dAvailable;
let nDiffMins = Math.round(((nDiffMs % 86400000) % 3600000) / 60000);
//Если простой больше указанного в настройках - будем оповещать по почте
if (nDiffMins >= this.services[i].nUnavlblNtfTime) {
if (nDiffMins >= service.nUnavlblNtfTime) {
//Подготовим сообщение для уведомления
let sMessage = `Сервис недоступен более ${
this.services[i].nUnavlblNtfTime
} мин. (${nDiffMins} мин. с момента запуска сервера приложений).\nАдрес сервиса: ${
this.services[i].sSrvRoot
}`;
let sMessage = `Сервис недоступен более ${service.nUnavlblNtfTime} мин. (${nDiffMins} мин. с момента запуска сервера приложений).\nАдрес сервиса: ${service.sSrvRoot}`;
//Положим уведомление в протокол работы сервера приложений
await this.logger.error(sMessage, { nServiceId: this.services[i].nId });
await this.logger.error(sMessage, { nServiceId: service.nId });
//И в очередь уведомлений
await this.notifier.addMessage({
sTo: this.services[i].sUnavlblNtfMail,
sSubject: `Удалённый сервис ${this.services[i].sCode} неотвечает на запросы`,
sTo: service.sUnavlblNtfMail,
sSubject: `Удалённый сервис ${service.sCode} неотвечает на запросы`,
sMessage
});
}
}
}
//Если сервис надо проверять на доступность то проверим так же - есть ли у него неотработанные сообщения обмена
if (this.services[i].nUnavlblNtfSign == objServiceSchema.NUNAVLBL_NTF_SIGN_YES) {
if (service.nUnavlblNtfSign == objServiceSchema.NUNAVLBL_NTF_SIGN_YES) {
try {
let res = await this.dbConn.getServiceExpiredQueueInfo({
nServiceId: this.services[i].nId
nServiceId: service.nId
});
//Если у сервиса есть просроченные сообщения - будет отправлять информацию об этом
if (res.nCnt > 0) {
//Отправляем уведомление
await this.notifier.addMessage({
sTo: this.services[i].sUnavlblNtfMail,
sSubject: `Для сервиса ${
this.services[i].sCode
} зафиксированы просроченные сообщения обмена (${res.nCnt} ед.)`,
sTo: service.sUnavlblNtfMail,
sSubject: `Для сервиса ${service.sCode} зафиксированы просроченные сообщения обмена (${res.nCnt} ед.)`,
sMessage: res.sInfoList
});
}
} catch (e) {
await this.logger.error(
`При проверке просроченных сообщений сервиса ${this.services[i].sCode}: ${makeErrorText(
e
)}`,
{ nServiceId: this.services[i].nId }
`При проверке просроченных сообщений сервиса ${service.sCode}: ${makeErrorText(e)}`,
{ nServiceId: service.nId }
);
}
}

View File

@ -45,7 +45,7 @@ const before = async prms => {
let cnt = 1;
let row;
while ((row = await rs.getRow())) {
prms.res.write(Buffer(`${cnt > 1 ? "," : ""}${JSON.stringify(row)}`));
prms.res.write(Buffer.from(`${cnt > 1 ? "," : ""}${JSON.stringify(row)}`));
cnt++;
}
//Завершаем передачу

View File

@ -88,7 +88,7 @@ const before = async prms => {
}
//Возвращаем отконвертированное в качестве тела запроса
return {
blMsg: new Buffer(requestXML)
blMsg: Buffer.from(requestXML)
};
}
};
@ -125,7 +125,7 @@ const after = async prms => {
"content-type": SHEADER_RESP_CONTENT_TYPE_JSON
}
},
blResp: new Buffer(parseRes ? JSON.stringify(parseRes) : prms.queue.blResp)
blResp: Buffer.from(parseRes ? JSON.stringify(parseRes) : prms.queue.blResp)
};
}
};

View File

@ -120,7 +120,7 @@ const afterConnect = async prms => {
if (!resp.error) {
//Сохраним полученный токен доступа в контекст сервиса
return {
blResp: new Buffer(resp.result),
blResp: Buffer.from(resp.result),
sCtx: resp.result,
dCtxExp: addHours(new Date(), 23)
};
@ -154,7 +154,7 @@ const beforeDocParse = async prms => {
simple: false,
func: obj.method
},
blMsg: new Buffer(JSON.stringify(obj))
blMsg: Buffer.from(JSON.stringify(obj))
};
} catch (e) {
throw Error(e);
@ -176,7 +176,7 @@ const afterDocParse = async prms => {
}
//Возврат результата
return {
blResp: new Buffer(resu)
blResp: Buffer.from(resu)
};
};