ServiceFabric StatefulService 部署故障排除

Troubleshooting ServiceFabric StatefulService Deployment

在 ServiceFabric 版本 5.1.163.9590 中使用有状态服务,我正在尝试部署一个演示应用程序,其中包含三个管理自己状态的 WebApi 服务。

三个服务中的两个启动并创建它们的分区时没有错误,但最后一个发出一系列警告和错误事件,错误详细信息有这个有趣的消息:

   Microsoft.ServiceFabric.Replicator.LoggingReplicator : GetCopyState The parameter copyContext is null. This might be caused by deployment bug that 'hasPersistedState' attribute is false. 

我找不到对此错误消息的任何外部引用。

有没有办法从应用程序和服务部署端或集群管理端纠正这个问题?

该错误表明您有一个具有持久状态的有状态服务,但在部署服务时没有将此告知 Service Fabric。

需要设置一个标志,以向 Service Fabric 指示有状态服务具有持久状态(与 "volatile," 表示仅在内存中的状态相反)。

在您的 ServiceManifest.xml 中,确保您在服务类型上设置了此标志:

  <ServiceTypes>
      <StatefulServiceType ServiceTypeName="MyServiceType" HasPersistedState="true" />
  </ServiceTypes>

然后,如果您通过 PowerShell 进行部署,请确保在创建服务实例时设置此标志:

PS > New-ServiceFabricService -Stateful -HasPersistedState -ServiceTypeName "MyServiceType" ...