rockspec_format = '3.0' package = 'tnt-rescue' version = 'scm-1' source = { url = 'git+https://github.com/tnt-skein/tnt-rescue.git', branch = 'main', } description = { summary = 'Опасные операции восстановления на узле Tarantool: цена, ворота, исполнение', detailed = [[ Аварийное действие исполняется на самом узле и только через ворота: поднять узел, когда владелец очереди синхронной записи мёртв, понизить кворум синхронной записи на срок, пересоздать соединения репликации. Узел сам считает цену по снимку кластера, сверяет отпечаток состояния, который видел оператор, признание последствий и слово подтверждения — и лишь потом меняется. Вызов по сети доступен всякому, кому выдано право, и защита, оставленная у того, кто зовёт, защищала бы ровно того, кто её соблюдает. Операции местные: каждая меняет тот узел, на котором её позвали, и имени узла в аргументах нет. Запрос с ключом исполняется один раз, и повтор после обрыва получает прежний ответ. Окно пониженного кворума всегда со сроком, и кворум возвращает сторож, а не оператор. Действия, стирающие каталог данных, не исполняются вовсе: цена считается, а шаги возвращаются человеку. Операции публикуются глобальными функциями, и право на каждую выдаётся конфигурацией кластера поимённо. Зависимости: tnt-recovery, tnt-leadership, tnt-ops, tnt-once, tnt-loop, tnt-clock, tnt-log, tnt-must и tnt-external. Покрытие строк и убитых мутантов — 100 %. ]], homepage = 'https://github.com/tnt-skein/tnt-rescue', issues_url = 'https://github.com/tnt-skein/tnt-rescue/issues', maintainer = 'tnt-skein', license = 'MIT', labels = { 'tarantool', 'recovery', 'replication', 'synchronous-replication', 'operations' }, } dependencies = { 'lua >= 5.1', -- Цена действия и ворота перед исполнением. 'tnt-recovery', -- Кто этот узел и захват очереди синхронной записи. 'tnt-leadership', -- Пересоздание соединений репликации. 'tnt-ops', -- Прежний ответ на повтор запроса с тем же ключом. 'tnt-once', -- Цикл сторожа окна пониженного кворума. 'tnt-loop', -- Монотонные часы окна. 'tnt-clock', -- Журнал операций и сторожа. 'tnt-log', -- Проверка настроек и срока окна. 'tnt-must', -- Подмена сведений об узле, ядра и часов в проверках. 'tnt-external', } build = { type = 'builtin', modules = { ['tnt.rescue'] = 'tnt/rescue.lua', ['tnt.rescue.window'] = 'tnt/rescue/window.lua', }, }