У меня очень странная проблема с CosmosDB
и Azure Functions
. Я часто удаляю свою базу данных и заново создаю ее в DEV. Затем я повторно развертываю приложение-функцию. Когда я вызываю API в приложении и вызываются триггеры CosmosDB, я обычно вижу созданную коллекцию leases
. Вот типичный триггер:
[FunctionName("MyTrigger")]
public static async Task RunAsync([CosmosDBTrigger("MyDatabase", "MyContainer",
ConnectionStringSetting = "CosmosConnectionString", LeaseCollectionName = "leases",
LeaseCollectionPrefix = "MyTrigger", CreateLeaseCollectionIfNotExists = true)]IReadOnlyList<Document> documents,
ExecutionContext executionContext)
{
// code
}
По какой-то причине коллекция leases
больше не создается. Я воссоздал базу данных, повторно развернул приложение-функцию несколько раз и безуспешно выполнял вызовы API. Что мне не хватает?
РЕДАКТИРОВАТЬ: Я просмотрел журналы и заметил, что есть много Microsoft.Azure.Documents.ChangeFeedProcessor.Exceptions.LeaseLostException
исключений с сообщением The lease was lost
, поэтому я не уверен, что происходит .
EDIT2: Вот более подробное сообщение об ошибке, которое мне удалось извлечь из журналов:
«Либо исходная коллекция MyContainer» (в базе данных MyDatabase) или коллекция аренды leases (в базе данных MyDatabase) не существует. Обе коллекции должны существовать до запуска слушателя. Чтобы автоматически создать коллекцию аренды, установите для CreateLeaseCollectionIfNotExists значение true
Обратите внимание, что CreateLeaseCollectionIfNotExists
уже установлено в true.