Проброс ошибки об отсутствии аутентификации головному процессу для постановки в очередь задания на аутентификацию
This commit is contained in:
parent
1088078181
commit
af5f93380f
@ -89,6 +89,8 @@ const appProcess = async prms => {
|
|||||||
);
|
);
|
||||||
//Если структура объекта в норме
|
//Если структура объекта в норме
|
||||||
if (!sCheckResult) {
|
if (!sCheckResult) {
|
||||||
|
//Запоминаем текущий статус сообщения
|
||||||
|
let nOldExecState = prms.queue.nExecState;
|
||||||
//Обрабатываем
|
//Обрабатываем
|
||||||
try {
|
try {
|
||||||
//Считываем статус аутентификации сервиса
|
//Считываем статус аутентификации сервиса
|
||||||
@ -175,7 +177,7 @@ const appProcess = async prms => {
|
|||||||
//Применим ответ "До" - флаг отсуствия аутентификации
|
//Применим ответ "До" - флаг отсуствия аутентификации
|
||||||
if (!_.isUndefined(resBefore.bUnAuth))
|
if (!_.isUndefined(resBefore.bUnAuth))
|
||||||
if (resBefore.bUnAuth === true) {
|
if (resBefore.bUnAuth === true) {
|
||||||
throw new ServerError(SERR_UNAUTH, "Не аутентифицирован");
|
throw new ServerError(SERR_UNAUTH, "Нет аутентификации");
|
||||||
}
|
}
|
||||||
//Применим ответ "До" - контекст работы сервиса
|
//Применим ответ "До" - контекст работы сервиса
|
||||||
if (!_.isUndefined(resBefore.sCtx))
|
if (!_.isUndefined(resBefore.sCtx))
|
||||||
@ -234,8 +236,7 @@ const appProcess = async prms => {
|
|||||||
}
|
}
|
||||||
//Применим ответ "После" - флаг утентификации сервиса
|
//Применим ответ "После" - флаг утентификации сервиса
|
||||||
if (!_.isUndefined(resAfter.bUnAuth))
|
if (!_.isUndefined(resAfter.bUnAuth))
|
||||||
if (resAfter.bUnAuth === true)
|
if (resAfter.bUnAuth === true) throw new ServerError(SERR_UNAUTH, "Нет аутентификации");
|
||||||
throw new ServerError(SERR_UNAUTH, "Не аутентифицирован");
|
|
||||||
//Применим ответ "После" - контекст работы сервиса
|
//Применим ответ "После" - контекст работы сервиса
|
||||||
if (!_.isUndefined(resAfter.sCtx))
|
if (!_.isUndefined(resAfter.sCtx))
|
||||||
if (prms.function.nFnType == objServiceFnSchema.NFN_TYPE_LOGIN) {
|
if (prms.function.nFnType == objServiceFnSchema.NFN_TYPE_LOGIN) {
|
||||||
@ -274,20 +275,35 @@ const appProcess = async prms => {
|
|||||||
nQueueId: prms.queue.nId
|
nQueueId: prms.queue.nId
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
//Нет атуентификации (мы ещё не меняли статус сообщения и это не считается за попытку исполнения, это будет просто сигнал, что надо аутентифицироваться а потом задача снова попадёт в очередь)
|
//Нет атуентификации
|
||||||
res = new ServerError(SERR_UNAUTH, "Не аутентифицирован");
|
throw new ServerError(SERR_UNAUTH, "Нет аутентификации");
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
//Фиксируем ошибку обработки сервером приложений - в статусе сообщения
|
//Если была ошибка аутентификации - возвращаем старый статус не меняя количества попыток
|
||||||
res = await dbConn.setQueueState({
|
if (e instanceof ServerError && e.sCode == SERR_UNAUTH) {
|
||||||
nQueueId: prms.queue.nId,
|
await dbConn.setQueueState({
|
||||||
sExecMsg: makeErrorText(e),
|
nQueueId: prms.queue.nId,
|
||||||
nIncExecCnt: NINC_EXEC_CNT_YES,
|
sExecMsg: makeErrorText(e),
|
||||||
nExecState:
|
nExecState: nOldExecState,
|
||||||
prms.queue.nExecCnt + 1 < prms.queue.nRetryAttempts
|
nResetData: objQueueSchema.NQUEUE_RESET_DATA_YES
|
||||||
? objQueueSchema.NQUEUE_EXEC_STATE_APP_ERR
|
});
|
||||||
: objQueueSchema.NQUEUE_EXEC_STATE_ERR
|
res = e;
|
||||||
});
|
} else {
|
||||||
|
//Фиксируем ошибку обработки сервером приложений - в статусе сообщения
|
||||||
|
res = await dbConn.setQueueState({
|
||||||
|
nQueueId: prms.queue.nId,
|
||||||
|
sExecMsg: makeErrorText(e),
|
||||||
|
nResetData:
|
||||||
|
prms.queue.nExecCnt + 1 < prms.queue.nRetryAttempts
|
||||||
|
? objQueueSchema.NQUEUE_RESET_DATA_YES
|
||||||
|
: objQueueSchema.NQUEUE_RESET_DATA_NO,
|
||||||
|
nIncExecCnt: NINC_EXEC_CNT_YES,
|
||||||
|
nExecState:
|
||||||
|
prms.queue.nExecCnt + 1 < prms.queue.nRetryAttempts
|
||||||
|
? objQueueSchema.NQUEUE_EXEC_STATE_APP_ERR
|
||||||
|
: objQueueSchema.NQUEUE_EXEC_STATE_ERR
|
||||||
|
});
|
||||||
|
}
|
||||||
//Фиксируем ошибку обработки сервером приложений - в протоколе работы сервиса
|
//Фиксируем ошибку обработки сервером приложений - в протоколе работы сервиса
|
||||||
await logger.error(
|
await logger.error(
|
||||||
`Ошибка обработки исходящего сообщения ${prms.queue.nId} сервером приложений: ${makeErrorText(e)}`,
|
`Ошибка обработки исходящего сообщения ${prms.queue.nId} сервером приложений: ${makeErrorText(e)}`,
|
||||||
@ -337,7 +353,7 @@ const dbProcess = async prms => {
|
|||||||
throw new ServerError(SERR_DB_SERVER, prcRes.sMsg);
|
throw new ServerError(SERR_DB_SERVER, prcRes.sMsg);
|
||||||
//Если результат - ошибка аутентификации, то и её пробрасываем, но с правильным кодом
|
//Если результат - ошибка аутентификации, то и её пробрасываем, но с правильным кодом
|
||||||
if (prcRes.sResult == objQueueSchema.SPRC_RESP_RESULT_UNAUTH)
|
if (prcRes.sResult == objQueueSchema.SPRC_RESP_RESULT_UNAUTH)
|
||||||
throw new ServerError(SERR_UNAUTH, prcRes.sMsg || "Не аутентифицирован");
|
throw new ServerError(SERR_UNAUTH, prcRes.sMsg || "Нет аутентификации");
|
||||||
}
|
}
|
||||||
//Фиксируем успешное исполнение (полное - дальше обработки нет) - в статусе сообщения
|
//Фиксируем успешное исполнение (полное - дальше обработки нет) - в статусе сообщения
|
||||||
res = await dbConn.setQueueState({
|
res = await dbConn.setQueueState({
|
||||||
@ -350,16 +366,27 @@ const dbProcess = async prms => {
|
|||||||
nQueueId: prms.queue.nId
|
nQueueId: prms.queue.nId
|
||||||
});
|
});
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
//Фиксируем ошибку обработки сервером БД - в статусе сообщения
|
//Если была ошибка аутентификации - возвращаем на повторную обработку сервером приложений
|
||||||
await dbConn.setQueueState({
|
if (e instanceof ServerError && e.sCode == SERR_UNAUTH) {
|
||||||
nQueueId: prms.queue.nId,
|
await dbConn.setQueueState({
|
||||||
sExecMsg: makeErrorText(e),
|
nQueueId: prms.queue.nId,
|
||||||
nIncExecCnt: NINC_EXEC_CNT_YES,
|
sExecMsg: makeErrorText(e),
|
||||||
nExecState:
|
nExecState: objQueueSchema.NQUEUE_EXEC_STATE_INQUEUE,
|
||||||
prms.queue.nExecCnt + 1 < prms.queue.nRetryAttempts
|
nResetData: objQueueSchema.NQUEUE_RESET_DATA_YES
|
||||||
? objQueueSchema.NQUEUE_EXEC_STATE_DB_ERR
|
});
|
||||||
: objQueueSchema.NQUEUE_EXEC_STATE_ERR
|
res = e;
|
||||||
});
|
} else {
|
||||||
|
//Фиксируем ошибку обработки сервером БД - в статусе сообщения
|
||||||
|
res = await dbConn.setQueueState({
|
||||||
|
nQueueId: prms.queue.nId,
|
||||||
|
sExecMsg: makeErrorText(e),
|
||||||
|
nIncExecCnt: NINC_EXEC_CNT_YES,
|
||||||
|
nExecState:
|
||||||
|
prms.queue.nExecCnt + 1 < prms.queue.nRetryAttempts
|
||||||
|
? objQueueSchema.NQUEUE_EXEC_STATE_DB_ERR
|
||||||
|
: objQueueSchema.NQUEUE_EXEC_STATE_ERR
|
||||||
|
});
|
||||||
|
}
|
||||||
//Фиксируем ошибку обработки сервером БД - в протоколе работы сервиса
|
//Фиксируем ошибку обработки сервером БД - в протоколе работы сервиса
|
||||||
await logger.error(
|
await logger.error(
|
||||||
`Ошибка обработки исходящего сообщения ${prms.queue.nId} сервером БД: ${makeErrorText(e)}`,
|
`Ошибка обработки исходящего сообщения ${prms.queue.nId} сервером БД: ${makeErrorText(e)}`,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user