У нас есть служба актера с двумя разделами. Все простаивающие вторичные реплики находятся в состоянии предупреждения со следующим сообщением от Service Fabric Explorer:
Unhealthy event: SourceId='System.RA', Property='ReplicaOpenStatus', HealthState='Warning', ConsiderWarningAsError=false.
Replica had multiple failures during open on _cp_3. API call: IStatefulServiceReplica.Open(); Error = System.ArgumentException (-2147024809)
An item with the same key has already been added.
at System.RuntimeTypeHandle.GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMarkHandle stackMark, IntPtr pPrivHostBinder, Boolean loadTypeFromPartialName, ObjectHandleOnStack type)
at System.RuntimeTypeHandle.GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean loadTypeFromPartialName)
at System.RuntimeType.GetType(String typeName, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMark& stackMark)
at System.Type.GetType(String typeName, Boolean throwOnError)
at System.Type.GetType(String typeName, Boolean throwOnError)
at System.Fabric.BackupRestore.BackupRestoreManagerFactory.GetBackupRestoreManager(IBackupRestoreReplica replica)
at System.Fabric.BackupRestore.BackupRestoreManagerFactory.GetBackupRestoreManager(IBackupRestoreReplica replica)
at System.Fabric.KeyValueStoreReplica..ctor(String storeName, LocalStoreSettings localStoreSettings, ReplicatorSettings replicatorSettings, KeyValueStoreReplicaSettings kvsSettings)
at System.Fabric.KeyValueStoreReplica..ctor(String storeName, LocalStoreSettings localStoreSettings, ReplicatorSettings replicatorSettings, KeyValueStoreReplicaSettings kvsSettings)
at Microsoft.ServiceFabric.Actors.Runtime.KvsActorStateProvider.OnCreateAndInitializeReplica(StatefulServiceInitializationParameters initParams, Action`1 copyHandler, Action`1 replicationHandler, Func`2 onDataLossHandler, Func`2 restoreCompletedHandler)
at Microsoft.ServiceFabric.Actors.Runtime.KvsActorStateProviderBase.Microsoft.ServiceFabric.Data.IStateProviderReplica.Initialize(StatefulServiceInitializationParameters initializationParameters)
at System.Fabric.ServiceFactoryBroker.CreateHelper[TFactory,TReturnValue](IntPtr nativeServiceType, IntPtr nativeServiceName, UInt32 initializationDataLength, IntPtr nativeInitializationData, Guid partitionId, Func`3 creationFunc, Action`2 initializationFunc, ServiceInitializationParameters initializationParameters)
For more information see: http://aka.ms/sfhealth
Впервые мы столкнулись с этой ошибкой при переходе с одного раздела на два раздела. Деактивация узла и удаление данных были временным решением, так как проблема возникла снова при следующем развертывании.
Эта проблема приводит к тому, что Service Fabric постоянно пытается запустить службу, которая просто остается в постоянном цикле «запустить, умереть, повторить».
Я понимаю, что реплика в состоянии IdleSecondary означает, что в настоящее время она получает данные от других узлов для повышения до уровня ActiveSecondary. Мне кажется, проблема связана с получением данных от других узлов для актеров.
Что вызывает эту проблему и как я могу предотвратить ее в будущем?