From a2fcbf11b34f663845c690bea7a06d585f0e1eb7 Mon Sep 17 00:00:00 2001 From: Mikhail Chechnev Date: Fri, 12 Mar 2021 21:22:23 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B5=D0=B2=D0=BE=D0=B4=20?= =?UTF-8?q?=D0=BF=D1=80=D0=B8=D0=BC=D0=B5=D0=BD=D0=B5=D0=BD=D0=B8=D1=8F=20?= =?UTF-8?q?=D0=BE=D0=B1=D1=8A=D0=B5=D0=BA=D1=82=D0=B0=20"Buffer"=20=D1=81?= =?UTF-8?q?=20=D0=BA=D0=BE=D0=BD=D1=81=D1=82=D1=80=D1=83=D0=BA=D1=82=D0=BE?= =?UTF-8?q?=D1=80=D0=B0=20"new"=20(=D1=83=D1=81=D1=82=D0=B0=D1=80=D0=B5?= =?UTF-8?q?=D0=B2=D1=88=D0=B8=D0=B9)=20=D0=BD=D0=B0=20=D1=81=D1=82=D0=B0?= =?UTF-8?q?=D1=82=D0=B8=D1=87=D0=B5=D1=81=D0=BA=D0=B8=D0=B9=20=D0=BC=D0=B5?= =?UTF-8?q?=D1=82=D0=BE=D0=B4=20"Buffer.from",=20=D1=86=D0=B8=D0=BA=D0=BB?= =?UTF-8?q?=D1=8B=20"for"=20=D1=81=20=D0=B0=D1=81=D0=B8=D0=BD=D1=85=D1=80?= =?UTF-8?q?=D0=BE=D0=BD=D0=BD=D1=8B=D0=BC=D0=B8=20=D0=B2=D1=8B=D1=85=D0=BE?= =?UTF-8?q?=D0=B2=D0=B0=D0=BC=D0=B8=20=D0=BF=D0=B5=D1=80=D0=B5=D0=BF=D0=B8?= =?UTF-8?q?=D1=81=D0=B0=D0=BD=D1=8B=20=D0=BD=D0=B0=20"for=20of"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/db_connector.js | 6 +-- core/in_queue.js | 2 +- core/notifier.js | 22 +++++----- core/out_queue.js | 18 ++++---- core/out_queue_processor.js | 2 +- core/service_available_controller.js | 62 ++++++++++++---------------- modules/olapp.js | 2 +- modules/pws.js | 4 +- modules/sbis.js | 6 +-- 9 files changed, 55 insertions(+), 69 deletions(-) diff --git a/core/db_connector.js b/core/db_connector.js index d8affce..b41596c 100644 --- a/core/db_connector.js +++ b/core/db_connector.js @@ -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 { diff --git a/core/in_queue.js b/core/in_queue.js index a89b9b0..9a268f9 100644 --- a/core/in_queue.js +++ b/core/in_queue.js @@ -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 = { diff --git a/core/notifier.js b/core/notifier.js index 66a24ab..a7dca7a 100644 --- a/core/notifier.js +++ b/core/notifier.js @@ -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 + )}` ); } } diff --git a/core/out_queue.js b/core/out_queue.js index 36bbfcd..0d4ce04 100644 --- a/core/out_queue.js +++ b/core/out_queue.js @@ -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 }); diff --git a/core/out_queue_processor.js b/core/out_queue_processor.js index abc061c..416c483 100644 --- a/core/out_queue_processor.js +++ b/core/out_queue_processor.js @@ -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, diff --git a/core/service_available_controller.js b/core/service_available_controller.js index 96a9fd0..1f241d2 100644 --- a/core/service_available_controller.js +++ b/core/service_available_controller.js @@ -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 } ); } } diff --git a/modules/olapp.js b/modules/olapp.js index c955ed8..110859b 100644 --- a/modules/olapp.js +++ b/modules/olapp.js @@ -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++; } //Завершаем передачу diff --git a/modules/pws.js b/modules/pws.js index 23287a0..fffdb8e 100644 --- a/modules/pws.js +++ b/modules/pws.js @@ -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) }; } }; diff --git a/modules/sbis.js b/modules/sbis.js index 5e60d2f..431dd96 100644 --- a/modules/sbis.js +++ b/modules/sbis.js @@ -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) }; };