Commit Graph

7 Commits

Author SHA1 Message Date
embeddevio 249f32e3f9 fix(#20): потокобезопасные чтения, BaseException в apply, old_value внутри транзакции (#54, #55)
Закрывает замечания ревью QA по PR #50:

* #54: все чтения Store идут через Database.read() под тем же RLock, что
  транзакции; контракт «одно соединение, все операции под локом»
  задокументирован в db.py и README модуля. Устраняет TypeError/IndexError
  на общем соединении, грязные чтения и выдачу состояния, которое затем
  откатывается падающим apply.
* #55 D-1: apply ловит BaseException — отмена/CancelledError/
  KeyboardInterrupt вызывают Applier.revert(previous) и пишут failed в
  audit_log (без «висящей» записи staged); падение revert попадает в detail.
* #55 D-2: set_geoip_schedule читает old_value внутри той же транзакции.

Refs #20, Refs #54, Refs #55
2026-10-28 21:12:09 +03:00
embeddevio 7e10ffaf8a test(store): репозиторий (аудит по всем сущностям) и персистентность после рестарта (#20) 2026-10-21 23:45:30 +03:00
embeddevio 89e5a5a883 test(store): миграции, аудит, атомарный apply/rollback (#20) 2026-10-21 23:45:06 +03:00
embeddevio 238d39a274 feat(store): репозиторий Store — аудируемые мутации по всем сущностям (#20) 2026-10-21 23:44:03 +03:00
embeddevio 34610b069c feat(store): миграции схемы v1, репозиторий с аудитом, атомарный apply/rollback (#20) 2026-10-21 23:43:45 +03:00
embeddevio c5b06a7ea4 feat(store): SQLite WAL, миграции, валидация, аудит, снимки состояния (#20) 2026-10-21 23:43:14 +03:00
embeddevio 9163265782 feat(store): схемы/модели/ошибки слоя хранения (#20) 2026-10-21 23:42:32 +03:00