Service Fabric - System.Replicator сообщил о предупреждении для свойства RemoteReplicatorConnectionStatus. Реплика xyz недоступна

Ошибка

'System.Replicator' reported Warning for property 'RemoteReplicatorConnectionStatus'.
Replica 132295460844367404 cannot be reached to start the copy process. Error Code: CannotConnect, Target listen address: localhost:62352/5298ce62-a8b6-4c10-944c-ce861fb5abd9-132295460844367404;70bcec58-3f57-4a23-b787-7353d53e631d:fdd277399fb82af80e7f8a0f097d244d. Verify that ReplicatorAddress config is valid.

Есть 3 реплики, из них 2 застряли в InBuild. Сообщение об ошибке исходит от первичной реплики, а идентификатор replicaId, на который он жалуется, относится к одной из вторичных реплик, которая застряла в InBuild.

Все, что я обнаружил в этой ошибке, относится к автономным кластерам, но мой кластер создан в Azure. Каковы некоторые причины этой ошибки? Это происходит с моей службой с отслеживанием состояния только при развертывании нескольких реплик.

В событиях первичной реплики отображается следующая ошибка для каждой из двух других реплик.

 "Description": "The api IReplicator.BuildReplica(132295460844367404) on node _default_4 is stuck. Start Time (UTC): 2020-03-24 17:55:24.215.",

Если я установлю счетчик реплик равным 1, ошибка не появится, пока я не попытаюсь обновить приложение, и в этот момент оно создало простаивающую реплику для обмена и застревает на этой ошибке, что приводит к зависанию обновления на неопределенный срок.

Это же приложение можно без ошибок развернуть в моем локальном 5-узловом кластере.


person Josh    schedule 24.03.2020    source источник


Ответы (1)


Я начал комментировать код, чтобы увидеть, смогу ли я добраться до состояния, в котором он работает, и в конечном итоге сузил его до того, как я переопределял настройки репликатора.

Я делал это

public MyStateFulService(StatefulServiceContext context)
: base(context, new ReliableStateManager(context, new ReliableStateManagerConfiguration(new ReliableStateManagerReplicatorSettings
{
MaxReplicationMessageSize = 1073741824
}))){ }

и изменив его на

<Section Name="ReplicatorConfig">
    <Parameter Name="ReplicatorEndpoint" Value="ReplicatorEndpoint" />
    <Parameter Name="MaxReplicationMessageSize" Value="524288000" />
    <Parameter Name="MinLogSizeInMB" Value="4096" />
  </Section>

решил вопрос. Я предполагаю, что переопределил конечную точку репликатора по умолчанию, создав новый объект ReliableStateManagerReplicatorSettings

person Josh    schedule 25.03.2020