首页 > 解决方案 > Azure 事件中心 - IEventProcessor 的 CloseAsync 中的 LeaseLostException

问题描述

CloseAsync(PartitionContext, CloseReason)我们的内部方法有以下实现IEventProcessor

public async Task CloseAsync(PartitionContext context, CloseReason reason)
{
    // log reason and partition id

    if (reason == CloseReason.Shutdown)
    {
        // log shutdown event
        await context.CheckpointAsync();
    }
}

我们知道 LeaseLost 异常在这个方法中很好,我们看到了这些线程:

Azure EventHub 和函数 LeaseLostException

是什么导致 Azure 事件中心 ReceiverDisconnectedException/LeaseLostException?

当处理器关闭时,它曾经在某些调用中失败,但在其他调用中成功。最近,我们注意到它在所有调用CloseAsync()when the reason isCloseReason.Shutdown并且总是在完全相同的 exception时始终失败LeaseLostException。这是完整的异常消息和堆栈跟踪:

消息:“指定的租约 ID 与 blob 的租约 ID 不匹配。”

堆栈跟踪:

在 Microsoft.Azure.EventHubs.Processor.AzureStorageCheckpointLeaseManager.UpdateLeaseCoreAsync(AzureBlobLease 租约) 在 Microsoft.Azure.EventHubs.Processor.AzureStorageCheckpointLeaseManager.UpdateCheckpointAsync(租约,检查点检查点) 在 Microsoft.Azure.EventHubs.Processor.PartitionContext.PersistCheckpointAsync(检查点检查点)在 Microsoft.Azure.EventHubs.Processor.PartitionPump.CloseAsync(CloseReason 原因)的 CloseAsync(PartitionContext 上下文,CloseReason 原因)

我们正在使用 Microsoft.Azure.EventHubs v4.3.0 和 Microsoft.Azure.EventHubs.Processor v4.3.0

我们担心在这种情况下,不会写入检查点,并且在处理器重新启动时,由于无法保存最近的检查点位置,将会出现大量重复。有没有办法了解导致故障的原因以及如何修复它们?

标签: azureazure-eventhub

解决方案


麻烦您了。修复将在本周的 4.3.1 版本中发布。


推荐阅读