Service Fabric状态服务因FailFast失败

阿德里安·霍夫曼

我正在Azure群集中运行Service Fabric应用程序。该应用程序运行了好几天,没有任何问题。但是昨天我们注意到其中一项服务进入“错误”状态,此后一直未恢复。

该服务是一个可靠的有状态服务,具有1个分区和3个副本(即一个主副本,两个辅助副本)。该服务实现了一个长期运行的RunAsync(),并在RunAsync()期间并发地从许多ReliableDictionary条目读取和写入。

我们在主节点上的事件日志中注意到以下错误:

Description: The application requested process termination through System.Environment.FailFast(string message).
Message: ProgressVectorEntry.Lsn == failureLsn
Stack:
   at System.Environment.FailFast(System.String)
   at Microsoft.ServiceFabric.Replicator.ProgressVector.FindSharedVector(Microsoft.ServiceFabric.Replicator.ProgressVector, Microsoft.ServiceFabric.Replicator.ProgressVector)
   at Microsoft.ServiceFabric.Replicator.ProgressVector.FindCopyModePrivate(Microsoft.ServiceFabric.Replicator.CopyContextParameters, Microsoft.ServiceFabric.Replicator.CopyContextParameters, Int64)
   at Microsoft.ServiceFabric.Replicator.ProgressVector.FindCopyMode(Microsoft.ServiceFabric.Replicator.CopyContextParameters, Microsoft.ServiceFabric.Replicator.CopyContextParameters, Int64)
   at Microsoft.ServiceFabric.Replicator.LoggingReplicator.GetLogRecordsToCopy(Microsoft.ServiceFabric.Replicator.ProgressVector, System.Fabric.Epoch, Microsoft.ServiceFabric.Replicator.LogicalSequenceNumber, Microsoft.ServiceFabric.Replicator.LogicalSequenceNumber, Int64, Int64, Microsoft.ServiceFabric.Replicator.LogicalSequenceNumber ByRef, Microsoft.ServiceFabric.Replicator.LogicalSequenceNumber ByRef, Microsoft.ServiceFabric.Data.IAsyncEnumerator`1<Microsoft.ServiceFabric.Replicator.LogRecord> ByRef, Microsoft.ServiceFabric.Replicator.BeginCheckpointLogRecord ByRef)
   at Microsoft.ServiceFabric.Replicator.LoggingReplicatorCopyStream+<GetNextAsyncSafe>d__3.MoveNext()
   at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].Start[[Microsoft.ServiceFabric.Replicator.LoggingReplicatorCopyStream+<GetNextAsyncSafe>d__3, Microsoft.ServiceFabric.Data.Impl, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]](<GetNextAsyncSafe>d__3 ByRef)
   at Microsoft.ServiceFabric.Replicator.LoggingReplicatorCopyStream.GetNextAsyncSafe(System.Threading.CancellationToken)
   at Microsoft.ServiceFabric.Replicator.LoggingReplicatorCopyStream.GetNextAsync(System.Threading.CancellationToken)
   at System.Fabric.StateProviderBroker+AsyncEnumerateOperationDataBroker.<BeginGetNext>b__8(System.Threading.CancellationToken)
   at System.Fabric.Interop.Utility.WrapNativeAsyncMethodImplementation(System.Func`2<System.Threading.CancellationToken,System.Threading.Tasks.Task>, IFabricAsyncOperationCallback, System.String, System.Fabric.Interop.InteropApi)
   at System.Fabric.StateProviderBroker+AsyncEnumerateOperationDataBroker.BeginGetNext(IFabricAsyncOperationCallback)

我们从未在本地开发环境中观察到这一点,到目前为止,我们仅在Azure群集中观察到了这一点。

  1. 这里发生了什么事?它看起来像损坏的复制信息。
  2. 我们的代码该怎么做才能导致此问题?
阿德里安·霍夫曼

这是5.3.311中修复的Service Fabric中的问题

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

了解何时使用状态服务以及何时依赖Azure Service Fabric中的外部持久性

Azure Service Fabric中有状态服务与外部持久性之间的过渡

Azure Service Fabric中可靠的Blob状态?

自动使Azure Service Fabric状态服务中的可靠字典对象失效

Microsoft Service Fabric状态服务将无法启动

在服务项目之外访问Service Fabric无状态服务配置值

访问Azure Service Fabric状态服务状态

在Service Fabric中删除空闲的有状态服务

Service Fabric-为状态服务调用命名分区

在VSTS版本上部署Service Fabric服务版本升级失败

具有Asp.net核心依赖注入的Service Fabric状态服务

Azure Service Fabric:直接在ASP.NET Core有状态服务中使用可靠的集合

与Cloud Service Worker角色相比,使用Service Fabric无状态服务有什么优势?

Service Fabric,将V2迁移到有状态服务不起作用

有状态服务的Azure Service Fabric自动缩放

如何在Azure Service Fabric ASP.NET Core有状态服务中获取PartitionInfo?

Azure Service Fabric如何为全状态服务支持多区域?

从.Net Core无状态服务中调用.Net框架Service Fabric Actor

Service Fabric上的SignalR ASP.NET Core因HTTP 410 GONE而失败

如何对无状态Service Fabric服务进行分区

如何定义将在Service Fabric中按环境运行的状态服务

创建新的Azure Service Fabric状态服务时发生异常

分别部署Service Fabric服务

Service Fabric Asp.Net Core无状态服务上的HTTP和HTTPS终结点

NReco PDFGenerator在Azure Service Fabric上失败

MassTransit和Service Fabric状态服务?

Azure Service Fabric 有状态服务状态是否跨分区共享?

Service Fabric 反向代理有状态服务端口设置

在 Service Fabric 中将 Windows 服务作为有状态服务运行