Service Fabri c Reliable Dictionary - транзакция была внутренне прервана репликатором, так как она была активна слишком долго и заблокировала контрольную точку - PullRequest
0 голосов
/ 08 января 2020

Я пытаюсь добавить более 100 000 записей в надежный словарь. Я использую библиотеку https://github.com/jessebenson/service-fabric-indexing, которая хранит отдельные коллекции индексов. Я продолжаю сталкиваться с вышеупомянутой ошибкой. В меньших наборах данных нет ошибок, но я не сузил ограничение. Пока что я запускаю его только в локальном кластере с 1 узлом.

Когда я использую обычную надежную коллекцию, операция завершается успешно, но до завершения sh требуется около 15 секунд. К сожалению, мне нужна возможность извлекать элементы по groupId, поэтому потребуется библиотека вроде service-fabri c -indexing или похожая техника. Мне действительно нужно больше надежного ILookup, чем словаря, так как в некоторых случаях мне нужно получить группу записей по groupId, но в других нужно извлечь одну запись по идентификатору.

Я подхожу к проблеме неправильно? Мне трудно поверить, что надежные коллекции не могут обрабатывать две коллекции (индексную и основную), которые обновляются 100 000 раз за одну транзакцию, и все это одним потоком. Я видел другие сообщения с этой ошибкой (более ранняя итерация, но я считаю, что та же проблема и результат был ... не получить доступ к нескольким коллекциям в транзакции. Действительно ли это состояние надежных коллекций или мы делаем это неправильно?

https://social.msdn.microsoft.com/Forums/aspnet/en-US/be0af246-be89-4078-9d75-84f73c7d4b32/invalidoperationexception-transaction-has-already-committed-or-rolled-back?forum=AzureServiceFabric&prof=required

...