分区是法定人数损失

时间:2016-09-20 13:35:17

标签: azure-service-fabric service-fabric-stateful

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

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

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

  

错误事件:SourceId =' System.FM',Property =' State'。分区是在   法定人数损失。

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

我的其他辅助人员未能进入ActiveSecondary状态导致法定人数减少的原因是什么?

enter image description here

2 个答案:

答案 0 :(得分:1)

尝试重置群集。 我面临同样的问题,我的服务有1个分区。 通过重置群集

修复了错误

答案 1 :(得分:0)

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

我遇到了类似的问题,除了我使用的是ReliableDictionary。您是否正确实施了IEquatable<T>IComparable<T>?我有一个类似的问题,因为我的T有一个字典字段,我直接在字典上调用Equals,而不是比较键和值。 GetHashCode也是如此。

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

enter image description here