❌

Normal view

Бэкап SQLite прошёл проверку. Второй заказ в него не попал

Копия SQLite открывается, контрольная сумма совпадает, integrity_check отвечает ok. А подтверждённого заказа в ней нет. Разбираю результат десяти локальных прогонов: где осталась запись, почему проверки её не заметили и как принять резервную копию по содержимому. Полный проверенный скрипт — внутри.

Читать далее

Сколько миллисекунд без читателей нужно SQLite, чтобы файл -wal перестал расти

Документация SQLite говорит, что -wal перестаёт расти, только если у читателей, которые видят кадры из -wal, бывают общие паузы, но не говорит, какой длины. Я замерил в контейнере на SQLite 3.46.1: на моём стенде хватало единиц миллисекунд — 2 мс при 50 коммитах/с, 5 мс при 1000/с, и быстрой записи понадобилась пауза шире. Без паузы три читателя по 50 мс раздувают -wal так же, как один на 20 секунд, а случайные запросы по 5 мс почти не мешали, пока база была свободна хотя бы 13% времени.

Читать далее

После комментариев на Хабре я ограничил чтение SQLite и перевёл Docker-модуль в WASI

После прошлой статьи о Pulse читатели Хабра обратили внимание на вещи, которые я не учёл: долгий запрос истории может мешать очистке SQLite WAL, успешное выполнение команды ещё не означает, что контейнер поднялся, а разрешения модуля сами по себе не изолируют его от файлов сервера.

Я пошёл проверять эти замечания и разбирать реализацию. В статье — что получилось: тест чтения истории одновременно с записью отчётов, ограничение времени запросов и наблюдение за WAL, проверка состояния Docker-контейнера после команды и перевод модуля в WASI с доступом к Docker через ограниченный API-посредник.

Покажу, что теперь проверяется, какие ограничения появились и почему даже после этих изменений нельзя обещать выполнение команд «ровно один раз» или считать запущенный контейнер готовым к работе.

Читать далее
❌