Ошибка в ISatefulServiceReplica.Open — элемент с таким же ключом уже добавлен

У нас есть служба актера с двумя разделами. Все простаивающие вторичные реплики находятся в состоянии предупреждения со следующим сообщением от 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. Мне кажется, проблема связана с получением данных от других узлов для актеров.

Что вызывает эту проблему и как я могу предотвратить ее в будущем?


person Justin Self    schedule 23.04.2018    source источник


Ответы (1)


Перераспределение ActorService не поддерживается. Если вы хотите увеличить количество разделов, вам нужно будет удалить службу, а затем создать ее снова.

Можете ли вы поделиться подробностями о том, какие операции Service Fabric вы на самом деле выполнили, когда сказали: «перемещение из одного раздела в два раздела»?

person Hasibur Rahman - MSFT    schedule 04.05.2018