我们有一个Service Fabric应用程序,包含多个actor和服务。演员&服务在大多数开发机器上成功部署和运行。但是,在一些开发机器上,其中一个服务没有明显的原因显示错误状态。
在Service Fabric Explorer中,错误图标显示在群集上一直到分区。但是,该节点未显示它处于错误状态。等待几分钟后,节点确实显示了一个警告图标,并显示以下错误消息:
不健康事件:SourceId ='System.RA',Property ='ReplicaOpenStatus', HealthState ='Warning',ConsideWarningAsError = false。复制品了 打开期间多次失败。 Error = System.TypeLoadException (-2146233054)无法加载类型 程序集中的“Microsoft.ServiceFabric.Data.ReliableStateManagerImpl” 'Microsoft.ServiceFabric.Data.Impl,Version = 5.0.0.0,Culture = neutral, PublicKeyToken = 31bf3856ad364e35'at Microsoft.ServiceFabric.Data.ReliableStateManager.get_Impl()at Microsoft.ServiceFabric.Data.ReliableStateManager.Microsoft.ServiceFabric.Data.IStateProviderReplica.Initialize(StatefulServiceInitializationParameters initializationParameters) Microsoft.ServiceFabric.Services.Runtime.StatefulServiceBase.System.Fabric.IStatefulServiceReplica.Initialize(StatefulServiceInitializationParameters initializationParameters) System.Fabric.ServiceFactoryBroker.CreateHelper [TFactory,TReturnValue](IntPtr的 nativeServiceType,IntPtr nativeServiceName,UInt32 initializationDataLength,IntPtr nativeInitializationData,Guid partitionId,Func
3 creationFunc, Action
2 initializationFunc, ServiceInitializationParameters initializationParameters)
我设置了断点,发现每个预期的program.cs行都会执行,最终会进入Thread.Sleep(Timeout.Infinite)。但是没有一行失败的服务代码被击中。
有争议的服务是有状态的,并与无状态的演员共享一个程序集。我不倾向于在一个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具有相同的文件。
非常感谢任何帮助或建议。
答案 0 :(得分:1)
不幸的是我不知道具体细节,但我相信一旦你完全升级(最新的SDK +最新的nuget软件包),问题就会消失。