分区是法定人数损失

Dis*_*ile 6 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状态导致法定人数减少的原因是什么?

在此输入图像描述

aoe*_*lks 0

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

我遇到了类似的问题,只不过我使用的是 ReliableDictionary。您是否正确执行IEquatable<T>IComparable<T>?我遇到了类似的问题,因为我T有一个字典字段,并且我Equals直接调用字典,而不是比较键和值。同样的事情对于GetHashCode.

事件日志中的线索是以下消息:Assert=Cannot update an item that does not exist (null).- 仅当我编辑密钥 ReliableDictionary 时才发生。

在此输入图像描述