Service Fabric:System.IndexOutOfRangeException - 'System.RA' 报告了属性 'ReplicaOpenStatus'

问题描述

我正在尝试在我的服务结构集群上部署无状态应用程序。部署应用程序后,它会立即进入警告状态,然后出现以下错误

'System.RA' 报告了属性 'ReplicaOpenStatus' 的警告。复制品 在 _nt1vm_4 上打开时出现多次故障。 API调用: IStatelessServiceInstance.open();错误 = system.indexOutOfRangeException (-2146233080) 索引超出 数组的边界。在 System.Fabric.Common.Tracing.FabricEventSource.ExtensionsEventsInternal.WriteWarning(字符串 id、字符串类型、字符串消息)在 Microsoft.ServiceFabric.Services.Runtime.StatelessServiceInstanceAdapter.d__0.MoveNext() 有关更多信息,请参阅:https://aka.ms/sfhealth

这种情况发生在我的本地 SF 集群和部署在 Azure 上时。由于它甚至没有进入应用程序中的主程序,因此我看不到任何其他有意义的日志或事件。我还登录到远程节点并查看了日志,除此之外没有找到任何其他内容。 这条消息中并不清楚此错误的来源,而且我无法在没有应用程序日志的情况下进行调试。

service fabric application error

解决方法

我会看两件事:

  1. 您是否对 ServiceEventSource 进行了任何更改,使其在写出值时访问无效(负)索引?
  2. 在任何出现故障的服务的入口类中的 RunAsync 方法中,将其全部包装在 try/catch 中,并在抛出异常的地方设置断点 - 如果它无误地运行,它至少会缩小底层问题来自。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...