Тест на замачивание дал зеленый цвет. Цепь цела, проверка-сохранение в порядке, задержка p99 0,36 мс. Потом я посчитал строки: 9016 из 10000. Около тысячи записей пропали, и каждому звонившему сообщили, что запись прошла успешно. Это вид...
Тест на замачивание дал зеленый цвет. Цепь цела, проверка-сохранение в порядке, задержка p99 0,36 мс. Потом я посчитал строки: 9016 из 10000. Около тысячи записей пропали, и каждому звонившему сообщили, что запись прошла успешно.
Это своего рода сбой, который создает фоновый поток, удерживающий блокировку, необходимую для горячего пути, — и подъем буфера для «исправления» этой проблемы является неправильным первым шагом.
Две нити, один замок
Демон записи агентов — один из инструментов в Agentic-Suite, наборе инструментов безопасности с открытым исходным кодом, не зависящих от оборудования для агентов ИИ, — имеет два важных потока.
Поток 1 — Accept (горячий путь): принимает соединения сокетов Unix от перехватчиков, читает сообщение, нормализует его, добавляет в хранилище с хеш-цепочкой.
def _append(сам, запись):
с self._lock: # ← требуется store._lock
self.store.append(запись)
Поток 2 — Sweeper (фоновая проверка): каждые 5 секунд перезагружает хранилище с диска и повторно проверяет всю хэш-цепочку. Это непрерывная проверка: если кто-то вмешивается в файл хранилища в середине сеанса, очиститель обнаруживает это и меняет состояние здоровья на пониженное.
защита _sweep_loop(self):
пока не self._stop.wait(5.0):
self.chain_status = self.store.refresh() # ← проблема
Б