fix: 10분 중단 즉시 복구와 대기 중 토너먼트 참가 허용

This commit is contained in:
2026-09-15 23:36:50 +00:00
parent 4fb1343943
commit ab5a1d240c
12 changed files with 447 additions and 87 deletions
+12 -3
View File
@@ -44,9 +44,18 @@ From 2026-09-07, maintenance and crash recovery use the following
`RECOVER_TURNS` policy. The base turn length does not change. One turn remains
36,000,000 ticks; a persisted `TurnRecoveryWindow` changes only wall execution.
- An entire delay strictly below `min(600 seconds, turnSeconds / 10)` catches
up immediately through the ordinary engine. Equality uses recovery. The
limit is 30 seconds on a 5-minute server and 6 minutes on a 60-minute server.
- From 2026-09-15, an entire delay up to and including 600 seconds catches
up immediately through the ordinary engine, independently of the server's
turn length. This accommodates host updates that pause and resume a VM.
Pending turns are executed in order with the ordinary per-run budget and
month boundary cap; they are not marked complete or skipped. The lease still
expires after 30 seconds and a fresh owner must fence the old process and
reload durable state before catching up. Operator pauses remain pauses.
- During the persisted wait before 2x recovery, tournament participation is
allowed when the phase is `RUNNING`, the daemon lease is ready, and DB/Redis
revision and deadline generation agree. Registration stage, capacity,
duplicate entry, fee and ENGINE transaction checks still apply. Tournament
stage advancement and settlement continue to require a ticking clock.
- For longer delays, skip only complete 12-turn blocks, moving future
schedules and the execution cursor by the same integer delta. Never apply
the short-delay exception again to the remainder. An exact multiple of
+5
View File
@@ -336,6 +336,11 @@ PM2가 새 owner/epoch와 DB snapshot으로 재시작합니다. lease 오류만
않습니다. 이전 버전에서 이미 lease 오류로 PAUSED가 된 서버는 원인을 확인한 뒤
한 번 `START`/재개해야 합니다.
Host 업데이트 등으로 VM이 최대 10분 중단되면 새 runtime은 밀린 턴을 기존 엔진의
순서·batch budget으로 즉시 따라잡습니다(정확히 10분 포함). 10분 초과는 기존의
12턴 묶음 이동 및 대기 후 2배속 복구 정책을 사용합니다. 이미 저장한 복구 창과
운영자의 PAUSED/STOPPED는 변경하지 않습니다.
30초 lease와 이전 owner의 fencing은 유지합니다. transaction의 만료 검사는 시작에
고정된 `CURRENT_TIMESTAMP`가 아닌 검사 순간의 `clock_timestamp()`를 사용합니다.
역방향 시계 보정으로 기존 lease가 아직 유효하면 startup은 2초 간격으로 기다리며