Функция Azure не сообщает о сбое в сетку событий
@azuresupport #azTechHelp У меня есть тема сетки событий с подписчиком функции Azure, который имеет выходную привязку CosmosDB. Вот функция
export default async (context, eventGridEvent) => {
try {
context.log(`Saving Asset`);
context.log(`subject : ${eventGridEvent.subject}`)
context.log(`eventType : ${eventGridEvent.eventType}`)
var importObject = eventGridEvent.data;
if(!importObject.asset.id)
{
throw new Error("Supplied Asset does not have an ID specified, aborting!");
}
else
{
context.log(`Successfully exported asset(${eventGridEvent.data.objectId}) to Cosmos`);
context.bindings.outputDocument = importObject.asset;
}
}
catch (err) {
context.log.error(err);
context.log.error(`Error Processing Event Grid Object : ${eventGridEvent}`);
throw(err);
}
};
Логика в этой функции (как правило) никогда не выйдет из строя, однако привязка к базе данных Cosmos может быть неудачной (и происходит сбой из-за ограничения пропускной способности). Так что функция не работает, но это нормально, наша Сетка Событий будет повторяться, верно? Неправильно!
Изображение: сбои функции Azure
Проблема в том, что Event Grid не регистрирует ошибку и, в свою очередь, никогда не повторяет событие.
Теперь мы можем закодировать функцию, чтобы сделать CROS Cosmos внутри функции и вызвать ошибку, или, возможно, создать нашу собственную привязку, но мы хотели бы придерживаться встроенной привязки Cosmos.
Может кто-то в Azure взглянуть пожалуйста?
1 ответ
Вероятно, это связано с тем, что как только событие достигло функции Azure, оно считалось доставленным успешно, а результат выполнения функции не способствовал ответу http.
Это была известная проблема, исправленная в последнем выпуске расширений сетки событий, я бы сказал, что вы должны получить ее через неделю или две, если нет, откройте проблему здесь.