@chaos-overlords/kernel 0.9.6 → 0.9.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -674
- package/NOTICE +9 -12
- package/README.md +1 -1
- package/dist/domain/entities.d.ts +13 -0
- package/dist/domain/entities.d.ts.map +1 -1
- package/dist/domain/entities.js.map +1 -1
- package/dist/logic/canonical-json.js +28 -11
- package/dist/logic/canonical-json.js.map +1 -1
- package/dist/ports/storage.d.ts +75 -8
- package/dist/ports/storage.d.ts.map +1 -1
- package/dist/services/EventPublisher.d.ts +11 -0
- package/dist/services/EventPublisher.d.ts.map +1 -1
- package/dist/services/EventPublisher.js +19 -1
- package/dist/services/EventPublisher.js.map +1 -1
- package/dist/services/LobbyService.d.ts.map +1 -1
- package/dist/services/LobbyService.js +5 -1
- package/dist/services/LobbyService.js.map +1 -1
- package/dist/services/SnapshotService.d.ts +16 -5
- package/dist/services/SnapshotService.d.ts.map +1 -1
- package/dist/services/SnapshotService.js +26 -7
- package/dist/services/SnapshotService.js.map +1 -1
- package/dist/services/TurnService.d.ts +47 -2
- package/dist/services/TurnService.d.ts.map +1 -1
- package/dist/services/TurnService.js +256 -76
- package/dist/services/TurnService.js.map +1 -1
- package/dist/testing/InMemoryStorage.d.ts +2 -0
- package/dist/testing/InMemoryStorage.d.ts.map +1 -1
- package/dist/testing/InMemoryStorage.js +87 -8
- package/dist/testing/InMemoryStorage.js.map +1 -1
- package/package.json +3 -3
|
@@ -5,7 +5,7 @@ import { hashOrderDocument, hashOrderSet } from '../logic/crypto';
|
|
|
5
5
|
import { allAwaitedReady, assignSlots, awaitedSeats, evaluateConsensus, sealedByDeadline, turnDeadline, } from '../logic/turn-logic';
|
|
6
6
|
import { requireInProgress, requireParticipant, requireTurn } from './guards';
|
|
7
7
|
import { matchStartedEvent } from './MatchQueryService';
|
|
8
|
-
import {
|
|
8
|
+
import { publishSeatSummaries } from './SnapshotService';
|
|
9
9
|
/** Turns are numbered from 1; 0 is the lobby's `currentTurn`, before any turn exists. */
|
|
10
10
|
export const FIRST_TURN = 1;
|
|
11
11
|
/**
|
|
@@ -305,6 +305,13 @@ export class TurnService {
|
|
|
305
305
|
* announce it, and open the next turn. Each step is conditional on its own predecessor, so a call
|
|
306
306
|
* on a turn that is already complete changes nothing and a call on one that stopped halfway
|
|
307
307
|
* finishes it. Orders are immutable from the CAS onwards, so the digest it derives is stable.
|
|
308
|
+
*
|
|
309
|
+
* The announcement is made by every caller that gets this far, not only by the one that froze
|
|
310
|
+
* the set, and it is keyed (`publishOnce`) so the log carries it once. The freeze's winner used to
|
|
311
|
+
* be the only publisher, so an append that threw after the freeze lost `turn.sealed` for good:
|
|
312
|
+
* the sweep found the stalled seal, saw the set frozen, opened the successor without announcing
|
|
313
|
+
* the seal, and every client waited on it forever. Announcing before `openTurn` also makes an
|
|
314
|
+
* open successor proof that its predecessor's seal is in the log, whichever caller opened it.
|
|
308
315
|
*/
|
|
309
316
|
async completeSeal(match, number) {
|
|
310
317
|
const turn = await this.deps.storage.turns.get(match.id, number);
|
|
@@ -320,7 +327,8 @@ export class TurnService {
|
|
|
320
327
|
return this.openTurn(match, Math.max(number, FIRST_TURN));
|
|
321
328
|
}
|
|
322
329
|
let advanced = false;
|
|
323
|
-
|
|
330
|
+
let orderSetHash = turn.orderSetHash;
|
|
331
|
+
if (orderSetHash === null || turn.sealedSlots === null) {
|
|
324
332
|
const [orders, players] = await Promise.all([
|
|
325
333
|
this.deps.storage.turns.listOrderSummaries(match.id, number),
|
|
326
334
|
this.deps.storage.players.listByMatch(match.id),
|
|
@@ -329,13 +337,21 @@ export class TurnService {
|
|
|
329
337
|
// Only a clock that ran out can make anyone absent. A ready seal is decided on the rows it
|
|
330
338
|
// read, every one of them ready; an empty row it finds now was topped up for a late seat in
|
|
331
339
|
// the window between that read and the seal, and that player was never given a chance.
|
|
332
|
-
|
|
340
|
+
//
|
|
341
|
+
// A seat already `takeoverPending` is asked about as well. This step runs again whenever an
|
|
342
|
+
// earlier attempt threw, and a throw between the status change below and the prompt's
|
|
343
|
+
// announcement left the seat pending with its question never put to anybody:
|
|
344
|
+
// `openTakeoverPrompt` is idempotent, and finishes exactly that.
|
|
345
|
+
const absentees = sealedByDeadline(turn)
|
|
346
|
+
? players.filter((player) => player.status === 'active' || player.status === 'takeoverPending')
|
|
347
|
+
: [];
|
|
333
348
|
for (const player of absentees) {
|
|
334
349
|
// A seat with no row at all (a late joiner seated after this turn opened) was never
|
|
335
350
|
// asked for orders, so it is not absent; only a row that stayed empty is.
|
|
336
351
|
if (submitted.has(player.id) || !orders.some((row) => row.playerId === player.id))
|
|
337
352
|
continue;
|
|
338
|
-
if (
|
|
353
|
+
if (player.status === 'takeoverPending' ||
|
|
354
|
+
(await this.deps.storage.players.transitionStatus(player.id, ['active'], 'takeoverPending'))) {
|
|
339
355
|
await this.openTakeoverPrompt(match.id, player.id, number);
|
|
340
356
|
}
|
|
341
357
|
}
|
|
@@ -350,24 +366,32 @@ export class TurnService {
|
|
|
350
366
|
sealedSlots.push({ playerId: row.playerId, slot });
|
|
351
367
|
entries.push({ slot, ordersHash: row.ordersHash });
|
|
352
368
|
}
|
|
353
|
-
const
|
|
369
|
+
const computed = await hashOrderSet(entries);
|
|
354
370
|
// Conditional on the set not being frozen already, NOT on the status: the status stays
|
|
355
371
|
// `sealed` for the whole window this branch runs in, and the sweep deliberately runs
|
|
356
372
|
// `completeSeal` against a seal in flight. Two callers with a departure between their two
|
|
357
373
|
// computations would otherwise each write a different digest and each announce it, and the
|
|
358
374
|
// client that fetched the set after the overwrite failed its digest check.
|
|
359
|
-
|
|
360
|
-
orderSetHash,
|
|
375
|
+
if (await this.deps.storage.turns.freezeSeal(match.id, number, {
|
|
376
|
+
orderSetHash: computed,
|
|
361
377
|
sealedSlots,
|
|
362
|
-
})
|
|
363
|
-
if (frozen) {
|
|
378
|
+
})) {
|
|
364
379
|
advanced = true;
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
380
|
+
orderSetHash = computed;
|
|
381
|
+
}
|
|
382
|
+
else {
|
|
383
|
+
// Another caller froze it first: announce the digest that stands, never this one.
|
|
384
|
+
orderSetHash = (await this.deps.storage.turns.get(match.id, number))?.orderSetHash ?? null;
|
|
369
385
|
}
|
|
370
386
|
}
|
|
387
|
+
if (orderSetHash !== null) {
|
|
388
|
+
const announced = await this.publisher.publishOnce(match.id, sealAnnouncementKey(number), {
|
|
389
|
+
type: 'turn.sealed',
|
|
390
|
+
payload: { turn: number, orderSetHash },
|
|
391
|
+
});
|
|
392
|
+
if (announced)
|
|
393
|
+
advanced = true;
|
|
394
|
+
}
|
|
371
395
|
return (await this.openTurn(match, number + 1)) || advanced;
|
|
372
396
|
}
|
|
373
397
|
/**
|
|
@@ -435,6 +459,7 @@ export class TurnService {
|
|
|
435
459
|
sealedSlots: null,
|
|
436
460
|
stateHash: null,
|
|
437
461
|
desyncedAt: null,
|
|
462
|
+
settledAt: null,
|
|
438
463
|
};
|
|
439
464
|
const created = await this.deps.storage.turns.open(turn, players.map((player) => player.id));
|
|
440
465
|
// A desynced match counts: a repaired seal must still point `currentTurn` at the turn that is
|
|
@@ -514,6 +539,16 @@ export class TurnService {
|
|
|
514
539
|
repaired += 1;
|
|
515
540
|
}
|
|
516
541
|
}
|
|
542
|
+
// A confirmation cut short after its compare-and-swap: `turn.confirmed` unannounced, or a
|
|
543
|
+
// finished match still `running`. `settle` finishes the follow-ups of a confirmed turn whose
|
|
544
|
+
// `settledAt` is still null, and nothing else ever looks at a confirmed turn again.
|
|
545
|
+
for (const { matchId, number } of await this.deps.storage.turns.listUnannouncedVerdicts(limit)) {
|
|
546
|
+
const finished = await this.guard(matchId, number, () => this.settle(matchId, number));
|
|
547
|
+
if (finished) {
|
|
548
|
+
this.deps.logger.warn('finished an interrupted verdict', { matchId, turn: number });
|
|
549
|
+
repaired += 1;
|
|
550
|
+
}
|
|
551
|
+
}
|
|
517
552
|
// A verdict cut short after its compare-and-swap leaves the match `desynced` with nothing
|
|
518
553
|
// unsettled, which no other path revisits.
|
|
519
554
|
for (const matchId of await this.deps.storage.matches.listDesynced(limit, touchedSince)) {
|
|
@@ -571,7 +606,7 @@ export class TurnService {
|
|
|
571
606
|
// with the host's report keeps late-join selection current without uploading another full save.
|
|
572
607
|
if (player.id === match.hostPlayerId && request.seatSummaries !== undefined) {
|
|
573
608
|
try {
|
|
574
|
-
await this.deps
|
|
609
|
+
await publishSeatSummaries(this.deps, match.id, request.seatSummaries);
|
|
575
610
|
}
|
|
576
611
|
catch (error) {
|
|
577
612
|
// Late-join hints are optional metadata. A full settings blob or a transient metadata write
|
|
@@ -616,14 +651,36 @@ export class TurnService {
|
|
|
616
651
|
*/
|
|
617
652
|
async openTakeoverPrompt(matchId, playerId, turn) {
|
|
618
653
|
const opened = await this.deps.storage.takeovers.openPrompt(matchId, playerId, turn, this.deps.clock.now());
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
654
|
+
// The announcement is owed by the prompt, not by the call that inserted it. The inserting call
|
|
655
|
+
// used to be the only publisher, so a publish that threw after the insert left a prompt that
|
|
656
|
+
// held the turn's clock and that no client was ever shown: every later call found it open and
|
|
657
|
+
// returned. A prompt still unstamped is announced by whichever call finds it — the repeated seal
|
|
658
|
+
// step, a rejoin re-asking about absent seats, a vote on the seat — keyed so racing callers log
|
|
659
|
+
// it once, and stamped only after the event is durable.
|
|
660
|
+
const prompt = await this.deps.storage.takeovers.getPrompt(matchId, playerId);
|
|
661
|
+
if (prompt === null || prompt.announcedAt !== null)
|
|
662
|
+
return opened;
|
|
663
|
+
const logged = await this.publisher.publishOnce(matchId, promptAnnouncementKey(playerId, prompt.openedAt), { type: 'match.takeoverVoteRequested', payload: { playerId, turn: prompt.turn } });
|
|
664
|
+
// The prompt was read a statement before the event was written, and nothing holds it open in
|
|
665
|
+
// between: the seat can report or rejoin, closing it and logging that, before the request is
|
|
666
|
+
// logged behind the close. Clients replay the log in order and would put up a vote about a seat
|
|
667
|
+
// that is active again, so a request that turns out to have followed its own close is withdrawn
|
|
668
|
+
// behind it. Only a seat that came back closes an unannounced prompt: a vote to the computer is
|
|
669
|
+
// cast against a prompt some client was shown, and none was shown this one.
|
|
670
|
+
if (logged !== null &&
|
|
671
|
+
(await this.deps.storage.takeovers.getPrompt(matchId, playerId)) === null) {
|
|
672
|
+
await this.publisher.publishOnce(matchId, promptWithdrawalKey(playerId, prompt.openedAt), {
|
|
673
|
+
type: 'match.takeoverVoteCancelled',
|
|
674
|
+
payload: { playerId },
|
|
675
|
+
});
|
|
676
|
+
return opened;
|
|
677
|
+
}
|
|
625
678
|
await this.clearOpenDeadline(matchId);
|
|
626
|
-
|
|
679
|
+
// The same close, landing after the check above but before the clock was stopped, restarted
|
|
680
|
+
// a clock that was still running and left this call to stop it behind no prompt at all.
|
|
681
|
+
await this.resumeAfterTakeoverVotes(matchId);
|
|
682
|
+
await this.deps.storage.takeovers.markPromptAnnounced(matchId, playerId, prompt.openedAt, this.deps.clock.now());
|
|
683
|
+
return opened;
|
|
627
684
|
}
|
|
628
685
|
/**
|
|
629
686
|
* Stop the clock of a match whose last active player has just left.
|
|
@@ -698,23 +755,37 @@ export class TurnService {
|
|
|
698
755
|
}
|
|
699
756
|
await this.trySeal(matchId, match.currentTurn, 'ready');
|
|
700
757
|
}
|
|
701
|
-
/**
|
|
758
|
+
/**
|
|
759
|
+
* Decide turn `number` from the reports on file. Idempotent and race-safe through CAS. Returns
|
|
760
|
+
* whether this call finished anything a confirmation cut short (see `finishConfirmation`), which
|
|
761
|
+
* is what the sweep reports as a repair.
|
|
762
|
+
*/
|
|
702
763
|
async settle(matchId, number) {
|
|
703
764
|
const [match, turn] = await Promise.all([
|
|
704
765
|
this.deps.storage.matches.get(matchId),
|
|
705
766
|
this.deps.storage.turns.get(matchId, number),
|
|
706
767
|
]);
|
|
707
768
|
if (!match || !turn || turn.status === 'open')
|
|
708
|
-
return;
|
|
769
|
+
return false;
|
|
709
770
|
if (turn.status === 'confirmed') {
|
|
710
771
|
// The compare-and-swap already happened; what may not have is what follows it. A process that
|
|
711
|
-
// died between the two
|
|
712
|
-
//
|
|
713
|
-
//
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
772
|
+
// died between the two, or a publish that threw, left `turn.confirmed` unannounced and a
|
|
773
|
+
// finished match `running` for good, since nothing else revisits a confirmed turn.
|
|
774
|
+
// `settledAt` says whether the follow-ups completed, and they are all safe to repeat.
|
|
775
|
+
if (turn.settledAt === null && turn.stateHash !== null) {
|
|
776
|
+
const reports = await this.deps.storage.turns.listReports(matchId, number);
|
|
777
|
+
const verdict = {
|
|
778
|
+
stateHash: turn.stateHash,
|
|
779
|
+
finished: confirmedFinished(reports, turn.stateHash),
|
|
780
|
+
};
|
|
781
|
+
return this.finishConfirmation(match, number, verdict, true);
|
|
782
|
+
}
|
|
783
|
+
// A desync pause lifted by this verdict whose lift was cut short: `resumeAfterDesync` is
|
|
784
|
+
// private and `reevaluate` only visits sealed and desynced turns, so this is the way back.
|
|
785
|
+
if (match.status === 'desynced') {
|
|
786
|
+
return this.resumeAfterDesync(matchId, this.deps.clock.now());
|
|
787
|
+
}
|
|
788
|
+
return false;
|
|
718
789
|
}
|
|
719
790
|
const [players, reports, snapshot] = await Promise.all([
|
|
720
791
|
this.deps.storage.players.listByMatch(matchId),
|
|
@@ -731,29 +802,9 @@ export class TurnService {
|
|
|
731
802
|
stateHash: verdict.stateHash,
|
|
732
803
|
});
|
|
733
804
|
if (!won)
|
|
734
|
-
return;
|
|
735
|
-
await this.
|
|
736
|
-
|
|
737
|
-
payload: { turn: number, stateHash: verdict.stateHash },
|
|
738
|
-
});
|
|
739
|
-
if (match.status === 'desynced')
|
|
740
|
-
await this.resumeAfterDesync(matchId, now);
|
|
741
|
-
if (verdict.finished &&
|
|
742
|
-
(await this.deps.storage.matches.transition(matchId, ['running', 'desynced'], {
|
|
743
|
-
status: 'finished',
|
|
744
|
-
updatedAt: now,
|
|
745
|
-
}))) {
|
|
746
|
-
// The seal opened the successor before anyone had reported, so a finished match is left
|
|
747
|
-
// holding an open turn with a live deadline. Nothing can be submitted to it (every write
|
|
748
|
-
// requires a running match) but it would sit in `listExpiredOpen` forever, and a client
|
|
749
|
-
// reading the match view would see a turn still counting down after the game ended.
|
|
750
|
-
await this.deps.storage.turns.rescheduleDeadline(matchId, turn.number + 1, null);
|
|
751
|
-
await this.publisher.publish(matchId, {
|
|
752
|
-
type: 'match.statusChanged',
|
|
753
|
-
payload: { status: 'finished' },
|
|
754
|
-
});
|
|
755
|
-
}
|
|
756
|
-
return;
|
|
805
|
+
return false;
|
|
806
|
+
await this.finishConfirmation(match, number, verdict, false);
|
|
807
|
+
return false;
|
|
757
808
|
}
|
|
758
809
|
if (verdict.kind === 'desynced') {
|
|
759
810
|
// Each consequence is conditional on its own state rather than on winning the transition, so
|
|
@@ -761,18 +812,27 @@ export class TurnService {
|
|
|
761
812
|
// left the match `running` with the turn already `desynced`: `turn.desynced` was never
|
|
762
813
|
// announced, `SnapshotService.upload` refused the repair with `snapshot_not_required` because
|
|
763
814
|
// the match was not desynced, and the turn stayed unsettled for good.
|
|
764
|
-
const
|
|
815
|
+
const retry = turn.status === 'desynced';
|
|
816
|
+
const won = retry ||
|
|
765
817
|
(await this.deps.storage.turns.transition(matchId, number, ['sealed'], {
|
|
766
818
|
status: 'desynced',
|
|
767
819
|
}));
|
|
768
820
|
if (!won)
|
|
769
|
-
return;
|
|
821
|
+
return false;
|
|
770
822
|
this.deps.logger.warn('turn desynced', { matchId, turn: number });
|
|
771
|
-
// The
|
|
772
|
-
//
|
|
773
|
-
//
|
|
774
|
-
|
|
775
|
-
|
|
823
|
+
// The pause comes before the announcement. A desynced match is what the sweep re-judges
|
|
824
|
+
// (`listDesynced`), so whatever throws after this point is retried; a `running` match with a
|
|
825
|
+
// desynced turn is revisited by nobody, and it went on sealing turns past the divergence.
|
|
826
|
+
await this.deps.storage.matches.transition(matchId, ['running'], {
|
|
827
|
+
status: 'desynced',
|
|
828
|
+
updatedAt: now,
|
|
829
|
+
});
|
|
830
|
+
// `desyncedAt` is the announcement's receipt, stamped once `turn.desynced` is durable, so a
|
|
831
|
+
// null one means the announcement is still owed. It used to be claimed first and published
|
|
832
|
+
// after, and a publish that threw in between lost the announcement for good. The event is
|
|
833
|
+
// keyed, so racing verdicts and repeats log it once.
|
|
834
|
+
if (turn.desyncedAt === null) {
|
|
835
|
+
await this.publisher.publishOnce(matchId, desyncAnnouncementKey(number), {
|
|
776
836
|
type: 'turn.desynced',
|
|
777
837
|
payload: {
|
|
778
838
|
turn: number,
|
|
@@ -780,39 +840,131 @@ export class TurnService {
|
|
|
780
840
|
candidateStateHashes: verdict.candidateStateHashes,
|
|
781
841
|
},
|
|
782
842
|
});
|
|
843
|
+
await this.deps.storage.turns.claimDesyncAnnouncement(matchId, number, now);
|
|
783
844
|
}
|
|
784
|
-
|
|
785
|
-
|
|
845
|
+
// Not behind the receipt above: a turn stamped by an older build that died before pausing
|
|
846
|
+
// the match is paused only now, and its pause is still owed to clients.
|
|
847
|
+
await this.announcePause(matchId);
|
|
848
|
+
}
|
|
849
|
+
return false;
|
|
850
|
+
}
|
|
851
|
+
/**
|
|
852
|
+
* Tell clients a match is paused, unless the log's last word on its status already says so.
|
|
853
|
+
*
|
|
854
|
+
* The pause is one fact however many turns diverge behind it, and the turn whose verdict paused
|
|
855
|
+
* the match cannot be told from the others once that verdict is cut short, so the owed
|
|
856
|
+
* announcement is judged from the log rather than from the verdict. Only a match that is still
|
|
857
|
+
* paused is announced as paused; a pause lifted while this ran is announced as lifted as well,
|
|
858
|
+
* since the lift saw no pause to announce and so said nothing.
|
|
859
|
+
*/
|
|
860
|
+
async announcePause(matchId) {
|
|
861
|
+
if ((await this.deps.storage.matches.get(matchId))?.status !== 'desynced')
|
|
862
|
+
return;
|
|
863
|
+
if (!(await this.announceStatus(matchId, 'desynced')))
|
|
864
|
+
return;
|
|
865
|
+
if ((await this.deps.storage.matches.get(matchId))?.status === 'running') {
|
|
866
|
+
await this.announceStatus(matchId, 'running');
|
|
867
|
+
}
|
|
868
|
+
}
|
|
869
|
+
/**
|
|
870
|
+
* Log `match.statusChanged` for a pause or its lift when it is owed: a pause when the last status
|
|
871
|
+
* announced is anything but a pause, a lift only when it is the pause (a match never paused, or
|
|
872
|
+
* whose pause was never announced, has nothing to lift in any client's eyes). Keyed by the status
|
|
873
|
+
* event it follows, so racing callers who read the same last word log the change once. Returns
|
|
874
|
+
* whether this call logged it.
|
|
875
|
+
*/
|
|
876
|
+
async announceStatus(matchId, status) {
|
|
877
|
+
const last = await this.deps.storage.events.latestOfType(matchId, 'match.statusChanged');
|
|
878
|
+
const lastStatus = last?.type === 'match.statusChanged' ? last.payload.status : null;
|
|
879
|
+
const owed = status === 'desynced' ? lastStatus !== 'desynced' : lastStatus === 'desynced';
|
|
880
|
+
if (!owed)
|
|
881
|
+
return false;
|
|
882
|
+
const logged = await this.publisher.publishOnce(matchId, statusAnnouncementKey(status, last?.seq ?? 0), { type: 'match.statusChanged', payload: { status } });
|
|
883
|
+
return logged !== null;
|
|
884
|
+
}
|
|
885
|
+
/**
|
|
886
|
+
* Everything a confirmation owes after its compare-and-swap: announce it, lift a desync pause it
|
|
887
|
+
* ends, finish a match it completes, then stamp `settledAt`. Every step is conditional on its own
|
|
888
|
+
* state or keyed in the log, so a repeat — by the sweep, over a verdict cut short — finishes what
|
|
889
|
+
* the first attempt left and duplicates nothing. Returns whether this call logged or changed
|
|
890
|
+
* anything, which for a repeat means it found work the first attempt left.
|
|
891
|
+
*/
|
|
892
|
+
async finishConfirmation(match, number, { stateHash, finished }, repeat) {
|
|
893
|
+
const matchId = match.id;
|
|
894
|
+
const now = this.deps.clock.now();
|
|
895
|
+
let worked = (await this.publisher.publishOnce(matchId, confirmationKey(number), {
|
|
896
|
+
type: 'turn.confirmed',
|
|
897
|
+
payload: { turn: number, stateHash },
|
|
898
|
+
})) !== null;
|
|
899
|
+
// A repeat looks even at a running match: the attempt it completes may have lifted the pause
|
|
900
|
+
// and died before announcing the lift or restarting the clock, and `resumeAfterDesync` judges
|
|
901
|
+
// from the log whether that is still owed.
|
|
902
|
+
if (match.status === 'desynced' || repeat) {
|
|
903
|
+
if (await this.resumeAfterDesync(matchId, now))
|
|
904
|
+
worked = true;
|
|
905
|
+
}
|
|
906
|
+
if (finished) {
|
|
907
|
+
const moved = await this.deps.storage.matches.transition(matchId, ['running', 'desynced'], {
|
|
908
|
+
status: 'finished',
|
|
786
909
|
updatedAt: now,
|
|
787
|
-
})
|
|
788
|
-
|
|
910
|
+
});
|
|
911
|
+
// A repeat finds the match already finished by the attempt it is completing, and still owes
|
|
912
|
+
// what followed that transition.
|
|
913
|
+
if (moved)
|
|
914
|
+
worked = true;
|
|
915
|
+
if (moved || (await this.deps.storage.matches.get(matchId))?.status === 'finished') {
|
|
916
|
+
// The seal opened the successor before anyone had reported, so a finished match is left
|
|
917
|
+
// holding an open turn with a live deadline. Nothing can be submitted to it (every write
|
|
918
|
+
// requires a running match) but it would sit in `listExpiredOpen` forever, and a client
|
|
919
|
+
// reading the match view would see a turn still counting down after the game ended.
|
|
920
|
+
await this.deps.storage.turns.rescheduleDeadline(matchId, number + 1, null);
|
|
921
|
+
const announced = await this.publisher.publishOnce(matchId, FINISH_ANNOUNCEMENT_KEY, {
|
|
789
922
|
type: 'match.statusChanged',
|
|
790
|
-
payload: { status: '
|
|
923
|
+
payload: { status: 'finished' },
|
|
791
924
|
});
|
|
925
|
+
if (announced)
|
|
926
|
+
worked = true;
|
|
792
927
|
}
|
|
793
928
|
}
|
|
929
|
+
await this.deps.storage.turns.markSettled(matchId, number, now);
|
|
930
|
+
return worked;
|
|
794
931
|
}
|
|
795
932
|
/**
|
|
796
933
|
* Lift a desync pause once nothing is unsettled. Orders were refused for the whole pause while
|
|
797
934
|
* the open turn's deadline kept running, so the turn would otherwise seal empty the moment the
|
|
798
935
|
* match resumes: its clock restarts here, and clients are told the new deadline.
|
|
936
|
+
*
|
|
937
|
+
* The lift's follow-ups are owed by the lift, not by the call that won its compare-and-swap. A
|
|
938
|
+
* call that finds the match already running while the log still says it is paused completes them
|
|
939
|
+
* for a lift that died half way; the announcement goes last, as their receipt. Returns whether
|
|
940
|
+
* this call lifted the pause or completed a lift.
|
|
799
941
|
*/
|
|
800
942
|
async resumeAfterDesync(matchId, now) {
|
|
801
943
|
if ((await this.deps.storage.turns.listUnsettled(matchId)).length > 0)
|
|
802
|
-
return;
|
|
944
|
+
return false;
|
|
803
945
|
const match = await this.deps.storage.matches.get(matchId);
|
|
804
946
|
if (!match)
|
|
805
|
-
return;
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
947
|
+
return false;
|
|
948
|
+
const moved = match.status === 'desynced' &&
|
|
949
|
+
(await this.deps.storage.matches.transition(matchId, ['desynced'], {
|
|
950
|
+
status: 'running',
|
|
951
|
+
updatedAt: now,
|
|
952
|
+
}));
|
|
953
|
+
// Lost to another lift, which owes the follow-ups; or no pause at all.
|
|
954
|
+
if (!moved && (match.status !== 'running' || !(await this.liftUnannounced(matchId)))) {
|
|
955
|
+
return false;
|
|
811
956
|
}
|
|
812
|
-
await this.
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
957
|
+
await this.restartClockAfterPause(match, now);
|
|
958
|
+
await this.announceStatus(matchId, 'running');
|
|
959
|
+
return true;
|
|
960
|
+
}
|
|
961
|
+
/** Whether the log's last status announcement is still the pause. */
|
|
962
|
+
async liftUnannounced(matchId) {
|
|
963
|
+
const last = await this.deps.storage.events.latestOfType(matchId, 'match.statusChanged');
|
|
964
|
+
return last?.type === 'match.statusChanged' && last.payload.status === 'desynced';
|
|
965
|
+
}
|
|
966
|
+
async restartClockAfterPause(match, now) {
|
|
967
|
+
const matchId = match.id;
|
|
816
968
|
// Not behind a modal. Kicking the odd one out is the documented remedy for a desync, and the
|
|
817
969
|
// kick opens an absence prompt for the kicked seat, so this path reached a paused turn every
|
|
818
970
|
// time in a timed match and put a full deadline back on it while the vote nobody could dismiss
|
|
@@ -829,6 +981,34 @@ export class TurnService {
|
|
|
829
981
|
await this.announceDeadline(matchId, match.currentTurn, deadlineAt);
|
|
830
982
|
}
|
|
831
983
|
}
|
|
984
|
+
/*
|
|
985
|
+
* Dedupe keys of the announcements that follow a compare-and-swap (`EventPublisher.publishOnce`).
|
|
986
|
+
* Each names the one fact it announces, so a repeat of the announcement is recognised as the same
|
|
987
|
+
* fact and never logged twice. They are server-side only and never reach a client.
|
|
988
|
+
*/
|
|
989
|
+
const sealAnnouncementKey = (turn) => `turn.sealed:${turn}`;
|
|
990
|
+
const confirmationKey = (turn) => `turn.confirmed:${turn}`;
|
|
991
|
+
const desyncAnnouncementKey = (turn) => `turn.desynced:${turn}`;
|
|
992
|
+
/**
|
|
993
|
+
* A pause or its lift, named by the status event it follows: the same change announced after the
|
|
994
|
+
* same last word is the same fact, and the next pause of the match follows a different event.
|
|
995
|
+
*/
|
|
996
|
+
const statusAnnouncementKey = (status, afterSeq) => `match.statusChanged:${status}:after:${afterSeq}`;
|
|
997
|
+
/** A match finishes once. */
|
|
998
|
+
const FINISH_ANNOUNCEMENT_KEY = 'match.statusChanged:finished';
|
|
999
|
+
/** A prompt is one opening of the question about a seat, which its `openedAt` identifies. */
|
|
1000
|
+
const promptAnnouncementKey = (playerId, openedAt) => `match.takeoverVoteRequested:${playerId}:${openedAt.getTime()}`;
|
|
1001
|
+
/** The withdrawal of one prompt's request that was logged after the prompt had closed. */
|
|
1002
|
+
const promptWithdrawalKey = (playerId, openedAt) => `match.takeoverVoteCancelled:${playerId}:${openedAt.getTime()}`;
|
|
1003
|
+
/**
|
|
1004
|
+
* Whether a confirmed turn finished the match, judged again from its reports when the verdict's
|
|
1005
|
+
* follow-ups are repeated. Reports are immutable once the turn is confirmed, and every client that
|
|
1006
|
+
* reported the confirmed state computed the same state, so they agree on whether it is final.
|
|
1007
|
+
*/
|
|
1008
|
+
function confirmedFinished(reports, stateHash) {
|
|
1009
|
+
const agreeing = reports.filter((report) => report.stateHash === stateHash);
|
|
1010
|
+
return agreeing.length > 0 && agreeing.every((report) => report.finished);
|
|
1011
|
+
}
|
|
832
1012
|
/**
|
|
833
1013
|
* Refuse a document whose ops act for a slot other than the submitter's.
|
|
834
1014
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TurnService.js","sourceRoot":"","sources":["../../src/services/TurnService.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TurnService.js","sourceRoot":"","sources":["../../src/services/TurnService.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,6 +16,8 @@ export declare class InMemoryStorage implements MultiplayerStorage {
|
|
|
16
16
|
private readonly snapshotRows;
|
|
17
17
|
private readonly eventRows;
|
|
18
18
|
private readonly promptRows;
|
|
19
|
+
/** `matchId` + dedupe key of every event appended with `appendOnce`, as the unique index holds. */
|
|
20
|
+
private readonly eventKeys;
|
|
19
21
|
private readonly voteRows;
|
|
20
22
|
readonly matches: MatchRepository;
|
|
21
23
|
readonly players: PlayerRepository;
|