rockspec_format = '3.0' package = 'tnt-fencing' version = 'scm-1' source = { url = 'git+https://github.com/tnt-skein/tnt-fencing.git', branch = 'main', } description = { summary = 'Решения об ограждении лидера: защита от двух пишущих узлов', detailed = [[ Лидер, потерявший связь с хранилищем решений, обязан сам уйти в режим только для чтения раньше, чем аренда координатора достанется другому узлу. Иначе отрезанный от сети лидер продолжает принимать записи, пока новый координатор поднимает другой узел, — это и есть разделение мозга. Пакет содержит только решения — чистые функции без обращений к box, сети и часам: пора ли ограждать себя, отдавать ли владение очередью синхронной записи, не устарело ли назначение и догнал ли новый лидер прежнего. Замер времени, опрос хранилища и само понижение до чтения остаются за теми, кто эти решения применяет: координатором, узлом, замком, восстановлением после отказа. Негодные данные ограждения не назначают, а незнакомое — строгость, обстоятельство, число реплик — читается в сторону безопасности. Срок ограждения считается от аренды координатора и обязан быть меньше неё. Зависимостей нет: только то, что встроено в Lua. Покрытие строк и убитых мутантов — 100 %. ]], homepage = 'https://github.com/tnt-skein/tnt-fencing', issues_url = 'https://github.com/tnt-skein/tnt-fencing/issues', maintainer = 'tnt-skein', license = 'MIT', labels = { 'tarantool', 'fencing', 'failover', 'leader-election', 'split-brain', 'replication' }, } dependencies = { 'lua >= 5.1', } build = { type = 'builtin', modules = { ['tnt.fencing'] = 'tnt/fencing.lua', }, }