Механизмы - Транзакция и хранилище

Page / - Изменено Alexandr Fokin в 2023/01/23 17:32

Транзакция и хранилище

Изменено Alexandr Fokin

в 2023/01/23 17:32

Оглавление

Комментарий
Условия	Тестирование проходило на версии 7 TestCluster. В качестве хранилища использовалась самодельная реализация IGrainStorage. Для имитации ошибки записи был задействован декоратор, который по порядковому номеру операции записи производил ошибку. После изменяющей транзакции предпринималась попытка в последующих транзакциях прочитать состояние.
По итогам предварительного тестирования.	Единичная ошибка записи в хранилище может: Как быть корректно обработана последующими операциями. При этом транзакция будет применена и все изменения будут сохранены. Так и привести к тому, что будет получено неконсистентное состояние в grain при записи которого возникла ошибка (по факту его состояние вернется к виду до начала транзакции. При этом состояния других Grain будут изменены, словно транзакция применилась успешно). Первоначально я рассчитывал, что поведение системы будет другим. Допускается вероятность того, что сами тесты были выполнены не корректно.
Проблемные случаи	Ошибка возникала в случае, когда не удавалось выполнить запись в: Ошибка при записи последнего состояния на этапе "Запись подготовленных изменений в хранилище". Ошибка при записи любого состояния, кроме последнего на этапе "Применение всех изменений". В остальных случаях системе удавалось восстановиться и сохранить консистентность.