Исходный код вики Транзакция и хранилище

Редактировал(а) Alexandr Fokin 2023/01/23 17:32

Скрыть последних авторов
Alexandr Fokin 2.2 1 [[image:Схема.png]]
Alexandr Fokin 2.3 2
3 ----
4
Alexandr Fokin 2.7 5 |(% colspan="2" style="width:214px" %)Комментарий
Alexandr Fokin 2.14 6 |(% style="width:214px" %)Условия|(% style="width:1281px" %)Тестирование проходило на версии 7 TestCluster.
Alexandr Fokin 2.10 7 В качестве хранилища использовалась самодельная реализация IGrainStorage. Для имитации ошибки записи был задействован декоратор, который по порядковому номеру операции записи производил ошибку.
Alexandr Fokin 2.9 8 После изменяющей транзакции предпринималась попытка в последующих транзакциях прочитать состояние.
Alexandr Fokin 2.5 9 |(% style="width:214px" %)По итогам предварительного тестирования.|(% style="width:1281px" %)(((
10 Единичная ошибка записи в хранилище может:
11
Alexandr Fokin 2.6 12 * Как быть корректно обработана последующими операциями.
13 При этом транзакция будет применена и все изменения будут сохранены.
Alexandr Fokin 2.11 14 * Так и привести к тому, что будет получено неконсистентное состояние в grain при записи которого возникла ошибка
15 (по факту его состояние вернется к виду до начала транзакции. При этом состояния других Grain будут изменены, словно транзакция применилась успешно).
Alexandr Fokin 2.5 16
17 Первоначально я рассчитывал, что поведение системы будет другим.
Alexandr Fokin 2.3 18 Допускается вероятность того, что сами тесты были выполнены не корректно.
Alexandr Fokin 2.5 19 )))
Alexandr Fokin 2.7 20 |(% style="width:214px" %)Проблемные случаи|(% style="width:1281px" %)(((
21 Ошибка возникала в случае, когда не удавалось выполнить запись в:
22
Alexandr Fokin 2.12 23 * Ошибка при записи последнего состояния на этапе "Запись подготовленных изменений в хранилище".
Alexandr Fokin 2.13 24 * Ошибка при записи любого состояния, кроме последнего на этапе "Применение всех изменений".
Alexandr Fokin 2.7 25
26 В остальных случаях системе удавалось восстановиться и сохранить консистентность.
27 )))