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