【发布时间】:2016-07-27 09:26:21
【问题描述】:
我们有一个包含多个参与者和服务的 Service Fabric 应用程序。演员和服务在大多数开发机器上成功部署和运行。然而,在一些开发机器上,其中一项服务无缘无故地显示为错误状态。
在 Service Fabric Explorer 中,错误图标一直显示在群集上,一直到分区。但是,该节点并未显示它处于错误状态。等待几分钟后,节点确实显示了一个警告图标和以下错误消息:
不健康事件:SourceId='System.RA'、Property='ReplicaOpenStatus'、 HealthState='警告',考虑WarningAsError=false。副本有 打开期间多次失败。错误 =System.TypeLoadException (-2146233054) 无法加载类型 来自程序集的“Microsoft.ServiceFabric.Data.ReliableStateManagerImpl” 'Microsoft.ServiceFabric.Data.Impl,版本=5.0.0.0,文化=中性, PublicKeyToken=31bf3856ad364e35' 在 Microsoft.ServiceFabric.Data.ReliableStateManager.get_Impl() 在 Microsoft.ServiceFabric.Data.ReliableStateManager.Microsoft.ServiceFabric.Data.IStateProviderReplica.Initialize(StatefulServiceInitializationParameters 初始化参数)在 Microsoft.ServiceFabric.Services.Runtime.StatefulServiceBase.System.Fabric.IStatefulServiceReplica.Initialize(StatefulServiceInitializationParameters 初始化参数)在 System.Fabric.ServiceFactoryBroker.CreateHelper[TFactory,TReturnValue](IntPtr nativeServiceType, IntPtr nativeServiceName, UInt32 初始化数据长度,IntPtr nativeInitializationData,Guid partitionId, Func
3 creationFunc, Action2 初始化Func, ServiceInitializationParametersinitializationParameters)
我设置了断点,发现 program.cs 的每个预期行都会执行,并最终到达 Thread.Sleep(Timeout.Infinite)。但是没有一行失败的服务代码被命中。
有争议的服务是有状态的,并与无状态的 Actor 共享一个程序集。我不倾向于将两个演员/服务放在一个 dll 中,但一位同事做了,它适用于大多数团队。不知道这是否是一个潜在的问题。
当这发生在两台开发机器上时,团队中的每个人都在运行 SDK 1.5。我升级到 SDK 2.0(但没有更改 Nuget 中的程序集引用以使用 2.0 程序集)。同样的问题。
我搜索了“Microsoft.ServiceFabric.Data.Impl”程序集,并在 [Program Files]\Microsoft Service Fabric\bin\Fabric\Fabric.Code 下找到了它。它是 5.0.135.9590 版本。
我的同事正在使用它,他的文件与版本 4.5.175.9590 相同。
非常感谢任何帮助或建议。
【问题讨论】:
标签: c# .net azure-service-fabric