6

我有一个 Service Fabric 应用程序,它有一个无状态 Web api 和一个有两个分区的有状态服务。无状态 web api 定义了一个 web api 控制器并用于ServiceProxy.Create获取有状态服务的远程代理。远程调用将消息放入可靠队列。

有状态服务将每隔 X 分钟从队列中取出消息。

我正在查看 Service Fabric 资源管理器,过去几天我的应用程序一直处于错误状态。当我深入了解详细信息时,有状态服务出现以下错误:

错误事件:SourceId='System.FM',Property='State'。分区处于仲裁丢失状态。

查看资源管理器,我发现我的主副本已启动并正在运行,它看起来像一个 ActiveSecondary,但其他两个副本显示 IdleSecondary 并且它们继续进入 Standby / In Build 状态。我无法弄清楚为什么会这样。

我的其他辅助节点一直无法进入 ActiveSecondary 状态/导致此仲裁损失的一些原因是什么?

在此处输入图像描述

4

2 回答 2

1

尝试重置集群。我面临着同样的问题,我的服务有 1 个分区。该错误已通过重置集群修复

于 2018-06-06T07:19:59.197 回答
0

您是否检查了节点上的 Windows 事件日志以获取其他错误消息?

我有一个类似的问题,除了我使用的是 ReliableDictionary。您是否正确实施IEquatable<T>and IComparable<T>?我有一个类似的问题,因为我T有一个字典字段,我Equals直接调用字典,而不是比较键和值。同样的事情GetHashCode

事件日志中的线索是这条消息:Assert=Cannot update an item that does not exist (null).- 它只发生在我编辑一个关键的 ReliableDictionary 时。

在此处输入图像描述

于 2016-12-22T03:18:07.873 回答