reserveHourly: следующий term = старт попытки + целое число часов, покрывающее длительность попытки (минимум один час). Walk 10:00-11:10 -> следующий не раньше 12:00; 10:00-12:10 -> 13:00. Попытка мёртвого процесса не имеет известного конца и занимает только свой term; после простоя tick сразу due и даёт один catch-up без очереди. DB-fence и running guard не менялись.
Тесты (реальный SQLite, контролируемые Date, persisted rows): short/failed, overlap на 1 и 2 term, граница term, новая revision, dead-process + downtime, same-process running.
Проверки: npm run verify OK; node test/sqlite.cjs --all без падений.
Closes #54.
`reserveHourly`: следующий term = старт попытки + целое число часов, покрывающее длительность попытки (минимум один час). Walk 10:00-11:10 -> следующий не раньше 12:00; 10:00-12:10 -> 13:00. Попытка мёртвого процесса не имеет известного конца и занимает только свой term; после простоя tick сразу due и даёт один catch-up без очереди. DB-fence и `running` guard не менялись.
Тесты (реальный SQLite, контролируемые Date, persisted rows): short/failed, overlap на 1 и 2 term, граница term, новая revision, dead-process + downtime, same-process running.
Проверки: `npm run verify` OK; `node test/sqlite.cjs --all` без падений.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Closes #54.
reserveHourly: следующий term = старт попытки + целое число часов, покрывающее длительность попытки (минимум один час). Walk 10:00-11:10 -> следующий не раньше 12:00; 10:00-12:10 -> 13:00. Попытка мёртвого процесса не имеет известного конца и занимает только свой term; после простоя tick сразу due и даёт один catch-up без очереди. DB-fence иrunningguard не менялись.Тесты (реальный SQLite, контролируемые Date, persisted rows): short/failed, overlap на 1 и 2 term, граница term, новая revision, dead-process + downtime, same-process running.
Проверки:
npm run verifyOK;node test/sqlite.cjs --allбез падений.