@chaos-overlords/kernel 0.9.1 → 0.9.2
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/dist/domain/entities.d.ts +7 -2
- package/dist/domain/entities.d.ts.map +1 -1
- package/dist/domain/entities.js +6 -0
- package/dist/domain/entities.js.map +1 -1
- package/dist/logic/turn-logic.d.ts +9 -1
- package/dist/logic/turn-logic.d.ts.map +1 -1
- package/dist/logic/turn-logic.js +14 -1
- package/dist/logic/turn-logic.js.map +1 -1
- package/dist/ports/runtime.d.ts +2 -0
- package/dist/ports/runtime.d.ts.map +1 -1
- package/dist/ports/storage.d.ts +25 -8
- package/dist/ports/storage.d.ts.map +1 -1
- package/dist/services/LobbyService.d.ts +18 -0
- package/dist/services/LobbyService.d.ts.map +1 -1
- package/dist/services/LobbyService.js +71 -23
- package/dist/services/LobbyService.js.map +1 -1
- package/dist/services/RateLimiter.d.ts +8 -0
- package/dist/services/RateLimiter.d.ts.map +1 -1
- package/dist/services/RateLimiter.js +32 -8
- package/dist/services/RateLimiter.js.map +1 -1
- package/dist/services/RetentionService.d.ts +50 -10
- package/dist/services/RetentionService.d.ts.map +1 -1
- package/dist/services/RetentionService.js +36 -11
- package/dist/services/RetentionService.js.map +1 -1
- package/dist/services/TurnService.d.ts +5 -0
- package/dist/services/TurnService.d.ts.map +1 -1
- package/dist/services/TurnService.js +43 -11
- package/dist/services/TurnService.js.map +1 -1
- package/dist/testing/InMemoryStorage.d.ts.map +1 -1
- package/dist/testing/InMemoryStorage.js +25 -1
- package/dist/testing/InMemoryStorage.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LobbyService.js","sourceRoot":"","sources":["../../src/services/LobbyService.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"LobbyService.js","sourceRoot":"","sources":["../../src/services/LobbyService.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,6 +21,12 @@ export declare class RateLimiter {
|
|
|
21
21
|
constructor(clock: Clock, options: RateLimiterOptions);
|
|
22
22
|
/** Returns the retry delay in seconds when over the limit, or null when the call is allowed. */
|
|
23
23
|
take(key: string): number | null;
|
|
24
|
+
/**
|
|
25
|
+
* Reserves one unit for work that may be rejected after validation. The returned release function
|
|
26
|
+
* refunds exactly this reservation, once, while its window is still live. A rolled or evicted
|
|
27
|
+
* window is never decremented on behalf of an older request.
|
|
28
|
+
*/
|
|
29
|
+
reserve(key: string): (() => void) | null;
|
|
24
30
|
/** What `take` would answer right now, spending nothing. */
|
|
25
31
|
peek(key: string): number | null;
|
|
26
32
|
/** How much of `key`'s budget the current window has already spent; 0 once it has rolled. */
|
|
@@ -42,6 +48,8 @@ export declare class RateLimiter {
|
|
|
42
48
|
* in line for eviction.
|
|
43
49
|
*/
|
|
44
50
|
private live;
|
|
51
|
+
/** The window `key` is spending from, opening an empty one at the tail when none is live. */
|
|
52
|
+
private open;
|
|
45
53
|
private expired;
|
|
46
54
|
/** Whole seconds until `entry`'s window rolls, rounded up. */
|
|
47
55
|
private retryAfter;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RateLimiter.d.ts","sourceRoot":"","sources":["../../src/services/RateLimiter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAe7C,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,6DAA6D;IAC7D,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAOD;;;;GAIG;AACH,qBAAa,WAAW;IAQpB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAR1B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiC;IACzD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAChC,OAAO,CAAC,SAAS,CAA2B;IAC5C,OAAO,CAAC,QAAQ,CAAa;IAC7B,OAAO,CAAC,OAAO,CAAI;IAEnB,YACmB,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,kBAAkB,EAG7C;IAED,gGAAgG;IAChG,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"RateLimiter.d.ts","sourceRoot":"","sources":["../../src/services/RateLimiter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAe7C,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,6DAA6D;IAC7D,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAOD;;;;GAIG;AACH,qBAAa,WAAW;IAQpB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAR1B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiC;IACzD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAChC,OAAO,CAAC,SAAS,CAA2B;IAC5C,OAAO,CAAC,QAAQ,CAAa;IAC7B,OAAO,CAAC,OAAO,CAAI;IAEnB,YACmB,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,kBAAkB,EAG7C;IAED,gGAAgG;IAChG,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAM/B;IAED;;;;OAIG;IACH,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAUxC;IAED,4DAA4D;IAC5D,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAK/B;IAED,6FAA6F;IAC7F,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEzB;IAED;;;;;;;OAOG;IACH,OAAO,CAAC,IAAI;IAOZ;;;;;;OAMG;IACH,OAAO,CAAC,IAAI;IAOZ,6FAA6F;IAC7F,OAAO,CAAC,IAAI;IAWZ,OAAO,CAAC,OAAO;IAIf,8DAA8D;IAC9D,OAAO,CAAC,UAAU;IAIlB;;;;;;;OAOG;IACH,OAAO,CAAC,KAAK;IAQb,0FAA0F;IAC1F,OAAO,CAAC,WAAW;CAOpB"}
|
|
@@ -31,19 +31,31 @@ export class RateLimiter {
|
|
|
31
31
|
/** Returns the retry delay in seconds when over the limit, or null when the call is allowed. */
|
|
32
32
|
take(key) {
|
|
33
33
|
const now = this.tick();
|
|
34
|
-
const entry = this.
|
|
35
|
-
if (!entry) {
|
|
36
|
-
// `live` removed any rolled window, so this appends at the tail and keeps the Map ordered.
|
|
37
|
-
this.windows.set(key, { windowStart: now, count: 1 });
|
|
38
|
-
this.prune(now);
|
|
39
|
-
this.evictOldest();
|
|
40
|
-
return null;
|
|
41
|
-
}
|
|
34
|
+
const entry = this.open(key, now);
|
|
42
35
|
if (entry.count >= this.options.limit)
|
|
43
36
|
return this.retryAfter(entry, now);
|
|
44
37
|
entry.count += 1;
|
|
45
38
|
return null;
|
|
46
39
|
}
|
|
40
|
+
/**
|
|
41
|
+
* Reserves one unit for work that may be rejected after validation. The returned release function
|
|
42
|
+
* refunds exactly this reservation, once, while its window is still live. A rolled or evicted
|
|
43
|
+
* window is never decremented on behalf of an older request.
|
|
44
|
+
*/
|
|
45
|
+
reserve(key) {
|
|
46
|
+
const reserved = this.open(key, this.tick());
|
|
47
|
+
if (reserved.count >= this.options.limit)
|
|
48
|
+
return null;
|
|
49
|
+
reserved.count += 1;
|
|
50
|
+
let released = false;
|
|
51
|
+
return () => {
|
|
52
|
+
if (released)
|
|
53
|
+
return;
|
|
54
|
+
released = true;
|
|
55
|
+
if (this.windows.get(key) === reserved)
|
|
56
|
+
reserved.count -= 1;
|
|
57
|
+
};
|
|
58
|
+
}
|
|
47
59
|
/** What `take` would answer right now, spending nothing. */
|
|
48
60
|
peek(key) {
|
|
49
61
|
const now = this.tick();
|
|
@@ -85,6 +97,18 @@ export class RateLimiter {
|
|
|
85
97
|
this.windows.delete(key);
|
|
86
98
|
return undefined;
|
|
87
99
|
}
|
|
100
|
+
/** The window `key` is spending from, opening an empty one at the tail when none is live. */
|
|
101
|
+
open(key, now) {
|
|
102
|
+
const live = this.live(key, now);
|
|
103
|
+
if (live)
|
|
104
|
+
return live;
|
|
105
|
+
// `live` removed any rolled window, so this appends at the tail and keeps the Map ordered.
|
|
106
|
+
const entry = { windowStart: now, count: 0 };
|
|
107
|
+
this.windows.set(key, entry);
|
|
108
|
+
this.prune(now);
|
|
109
|
+
this.evictOldest();
|
|
110
|
+
return entry;
|
|
111
|
+
}
|
|
88
112
|
expired(entry, now) {
|
|
89
113
|
return now - entry.windowStart >= this.options.windowMs;
|
|
90
114
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RateLimiter.js","sourceRoot":"","sources":["../../src/services/RateLimiter.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AACH,MAAM,gBAAgB,GAAG,MAAM,CAAA;AAc/B;;;;GAIG;AACH,MAAM,OAAO,WAAW;IAQH,KAAK;IACL,OAAO;IART,OAAO,GAAG,IAAI,GAAG,EAAuB,CAAA;IACxC,OAAO,CAAQ;IACxB,SAAS,GAAG,MAAM,CAAC,iBAAiB,CAAA;IACpC,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAA;IACrB,OAAO,GAAG,CAAC,CAAA;IAEnB,YACmB,KAAY,EACZ,OAA2B;qBAD3B,KAAK;uBACL,OAAO;QAExB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,gBAAgB,CAAA;IACpD,CAAC;IAED,gGAAgG;IAChG,IAAI,CAAC,GAAW;QACd,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;QACvB,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;QACjC,IAAI,
|
|
1
|
+
{"version":3,"file":"RateLimiter.js","sourceRoot":"","sources":["../../src/services/RateLimiter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +1,29 @@
|
|
|
1
1
|
import type { KernelDeps } from './deps';
|
|
2
2
|
export interface RetentionPolicy {
|
|
3
|
-
/** Age after which a finished
|
|
4
|
-
|
|
3
|
+
/** Age after which a finished or abandoned match is deleted. 0 keeps them forever. */
|
|
4
|
+
finishedMaxAgeMs: number;
|
|
5
|
+
/**
|
|
6
|
+
* Age after which a lobby that was never started is deleted. 0 keeps them forever.
|
|
7
|
+
*
|
|
8
|
+
* Its own window, and a short one, because a lobby holds nothing worth keeping: no turn has been
|
|
9
|
+
* played in it. On a public server the forgotten ones are also what clutters the Browse list.
|
|
10
|
+
* The age runs from creation or the last settings change; a join does not refresh it.
|
|
11
|
+
*
|
|
12
|
+
* Left unset, it follows the finished window's off switch: a server that keeps its finished
|
|
13
|
+
* matches forever (`finished: 0`) kept its lobbies forever too before this window existed, and an
|
|
14
|
+
* upgrade must not start deleting them underneath the guests seated in them.
|
|
15
|
+
*/
|
|
16
|
+
lobbyMaxAgeMs: number;
|
|
5
17
|
/**
|
|
6
18
|
* Age after which a RUNNING or desynced match with nobody active in it is deleted. 0 keeps them
|
|
7
|
-
* forever
|
|
19
|
+
* forever.
|
|
20
|
+
*
|
|
21
|
+
* Longer than {@link finishedMaxAgeMs} on purpose. A match in this state is not over — it is kept
|
|
22
|
+
* precisely so a player who closed the game can come back and rejoin — so the window has to be
|
|
23
|
+
* long enough that collecting one is the same statement as "nobody is coming back". It is the
|
|
24
|
+
* ordinary end of a match on a public server, and nothing else ever collects it.
|
|
8
25
|
*
|
|
9
|
-
*
|
|
10
|
-
* precisely so a player who closed the game in March can come back and rejoin — so the window has
|
|
11
|
-
* to be long enough that collecting one is the same statement as "nobody is coming back". It is
|
|
12
|
-
* the ordinary end of a match on a public server, and nothing else ever collected it.
|
|
26
|
+
* A join or a rejoin restarts the age, as every turn open and status change does.
|
|
13
27
|
*/
|
|
14
28
|
abandonedLiveMaxAgeMs: number;
|
|
15
29
|
/**
|
|
@@ -23,15 +37,40 @@ export interface RetentionPolicy {
|
|
|
23
37
|
* matches, their orders, their events and up to five megabytes of snapshot are immortal.
|
|
24
38
|
*/
|
|
25
39
|
silentLiveMaxAgeMs: number;
|
|
26
|
-
/** Matches deleted per sweep, so one pass cannot monopolise the database. */
|
|
40
|
+
/** Matches deleted per window per sweep, so one pass cannot monopolise the database. */
|
|
27
41
|
batchSize: number;
|
|
28
42
|
}
|
|
43
|
+
/**
|
|
44
|
+
* The retention windows in whole days, which is how both runtimes let an operator state them.
|
|
45
|
+
*
|
|
46
|
+
* Two are optional, and each follows another window when left out:
|
|
47
|
+
* - `lobby` is {@link DEFAULT_RETENTION_DAYS}'s lobby window, or 0 when `finished` is 0, so a
|
|
48
|
+
* server that switched retention off before lobbies had their own window keeps them too.
|
|
49
|
+
* - `silentLive` is {@link SILENT_TO_ABANDONED_RATIO} times `abandonedLive`, so the window without
|
|
50
|
+
* the roster test stays the longer of the two and switching the abandoned window off (0)
|
|
51
|
+
* switches both off.
|
|
52
|
+
*/
|
|
53
|
+
export interface RetentionDays {
|
|
54
|
+
finished: number;
|
|
55
|
+
lobby?: number;
|
|
56
|
+
abandonedLive: number;
|
|
57
|
+
silentLive?: number;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Defaults sized for a shared public server, where nobody is watching one self-hosted file grow and
|
|
61
|
+
* the database is every stranger's matches. A server for a group of friends that wants to keep its
|
|
62
|
+
* history longer raises them through configuration; nothing else depends on their values.
|
|
63
|
+
*/
|
|
64
|
+
export declare const DEFAULT_RETENTION_DAYS: Required<RetentionDays>;
|
|
65
|
+
export declare const SILENT_TO_ABANDONED_RATIO = 3;
|
|
66
|
+
export declare const DEFAULT_RETENTION_BATCH_SIZE = 50;
|
|
67
|
+
/** Maps windows stated in days onto the policy, deriving the windows that are left out. */
|
|
68
|
+
export declare function retentionPolicyFromDays(days: RetentionDays, batchSize?: number): RetentionPolicy;
|
|
29
69
|
export declare const DEFAULT_RETENTION: RetentionPolicy;
|
|
30
70
|
/**
|
|
31
71
|
* Deletes the matches nobody will come back to. A coordination server accumulates rows that have no
|
|
32
72
|
* second use — a finished match's order documents, a megabyte of snapshot per desync, the lobby
|
|
33
|
-
* someone opened and never started — and
|
|
34
|
-
* grow. Deleting the match row takes everything it owns with it, because every child table cascades.
|
|
73
|
+
* someone opened and never started — and every one of them has a window here after which it goes. Deleting the match row takes everything it owns with it, because every child table cascades.
|
|
35
74
|
*
|
|
36
75
|
* A running or desynced match is collected only when it has been silent for the much longer second
|
|
37
76
|
* window AND holds no active player. A desync pause is not abandonment and neither is a weekend;
|
|
@@ -43,6 +82,7 @@ export declare class RetentionService {
|
|
|
43
82
|
constructor(deps: Pick<KernelDeps, 'storage' | 'clock' | 'logger'>, policy?: RetentionPolicy);
|
|
44
83
|
collect(): Promise<number>;
|
|
45
84
|
private collectTerminated;
|
|
85
|
+
private collectNeverStarted;
|
|
46
86
|
private collectAbandonedLive;
|
|
47
87
|
/** The same delete without the roster test, on a window long enough to stand in for it. */
|
|
48
88
|
private collectSilentLive;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RetentionService.d.ts","sourceRoot":"","sources":["../../src/services/RetentionService.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;
|
|
1
|
+
{"version":3,"file":"RetentionService.d.ts","sourceRoot":"","sources":["../../src/services/RetentionService.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AAQxC,MAAM,WAAW,eAAe;IAC9B,sFAAsF;IACtF,gBAAgB,EAAE,MAAM,CAAA;IACxB;;;;;;;;;;OAUG;IACH,aAAa,EAAE,MAAM,CAAA;IACrB;;;;;;;;;;OAUG;IACH,qBAAqB,EAAE,MAAM,CAAA;IAC7B;;;;;;;;;OASG;IACH,kBAAkB,EAAE,MAAM,CAAA;IAC1B,wFAAwF;IACxF,SAAS,EAAE,MAAM,CAAA;CAClB;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,aAAa,EAAE,MAAM,CAAA;IACrB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,EAAE,QAAQ,CAAC,aAAa,CAK1D,CAAA;AAED,eAAO,MAAM,yBAAyB,IAAI,CAAA;AAE1C,eAAO,MAAM,4BAA4B,KAAK,CAAA;AAI9C,2FAA2F;AAC3F,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,aAAa,EACnB,SAAS,SAA+B,GACvC,eAAe,CAUjB;AAED,eAAO,MAAM,iBAAiB,EAAE,eAAiE,CAAA;AAEjG;;;;;;;;GAQG;AACH,qBAAa,gBAAgB;IAEzB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAFzB,YACmB,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAC,EACtD,MAAM,GAAE,eAAmC,EAC1D;IAEE,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,CAO/B;IAED,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,mBAAmB;IAS3B,OAAO,CAAC,oBAAoB;IAS5B,2FAA2F;IAC3F,OAAO,CAAC,iBAAiB;IASzB,mGAAmG;YACrF,aAAa;CAW5B"}
|
|
@@ -1,17 +1,38 @@
|
|
|
1
|
-
/** Matches that will never be played again
|
|
2
|
-
const
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
/** Matches that are over, and will never be played again. */
|
|
2
|
+
const TERMINATED = ['finished', 'abandoned'];
|
|
3
|
+
/** A lobby nobody ever started. It has no game in it, only a seat list and a listing slot. */
|
|
4
|
+
const NEVER_STARTED = ['lobby'];
|
|
5
|
+
/**
|
|
6
|
+
* Defaults sized for a shared public server, where nobody is watching one self-hosted file grow and
|
|
7
|
+
* the database is every stranger's matches. A server for a group of friends that wants to keep its
|
|
8
|
+
* history longer raises them through configuration; nothing else depends on their values.
|
|
9
|
+
*/
|
|
10
|
+
export const DEFAULT_RETENTION_DAYS = {
|
|
11
|
+
finished: 14,
|
|
12
|
+
lobby: 3,
|
|
13
|
+
abandonedLive: 30,
|
|
14
|
+
silentLive: 90,
|
|
9
15
|
};
|
|
16
|
+
export const SILENT_TO_ABANDONED_RATIO = 3;
|
|
17
|
+
export const DEFAULT_RETENTION_BATCH_SIZE = 50;
|
|
18
|
+
const DAY_MS = 24 * 60 * 60 * 1000;
|
|
19
|
+
/** Maps windows stated in days onto the policy, deriving the windows that are left out. */
|
|
20
|
+
export function retentionPolicyFromDays(days, batchSize = DEFAULT_RETENTION_BATCH_SIZE) {
|
|
21
|
+
const lobby = days.lobby ?? (days.finished === 0 ? 0 : DEFAULT_RETENTION_DAYS.lobby);
|
|
22
|
+
const silentLive = days.silentLive ?? days.abandonedLive * SILENT_TO_ABANDONED_RATIO;
|
|
23
|
+
return {
|
|
24
|
+
finishedMaxAgeMs: days.finished * DAY_MS,
|
|
25
|
+
lobbyMaxAgeMs: lobby * DAY_MS,
|
|
26
|
+
abandonedLiveMaxAgeMs: days.abandonedLive * DAY_MS,
|
|
27
|
+
silentLiveMaxAgeMs: silentLive * DAY_MS,
|
|
28
|
+
batchSize,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
export const DEFAULT_RETENTION = retentionPolicyFromDays(DEFAULT_RETENTION_DAYS);
|
|
10
32
|
/**
|
|
11
33
|
* Deletes the matches nobody will come back to. A coordination server accumulates rows that have no
|
|
12
34
|
* second use — a finished match's order documents, a megabyte of snapshot per desync, the lobby
|
|
13
|
-
* someone opened and never started — and
|
|
14
|
-
* grow. Deleting the match row takes everything it owns with it, because every child table cascades.
|
|
35
|
+
* someone opened and never started — and every one of them has a window here after which it goes. Deleting the match row takes everything it owns with it, because every child table cascades.
|
|
15
36
|
*
|
|
16
37
|
* A running or desynced match is collected only when it has been silent for the much longer second
|
|
17
38
|
* window AND holds no active player. A desync pause is not abandonment and neither is a weekend;
|
|
@@ -26,11 +47,15 @@ export class RetentionService {
|
|
|
26
47
|
}
|
|
27
48
|
async collect() {
|
|
28
49
|
return ((await this.collectTerminated()) +
|
|
50
|
+
(await this.collectNeverStarted()) +
|
|
29
51
|
(await this.collectAbandonedLive()) +
|
|
30
52
|
(await this.collectSilentLive()));
|
|
31
53
|
}
|
|
32
54
|
collectTerminated() {
|
|
33
|
-
return this.collectWindow(this.policy.
|
|
55
|
+
return this.collectWindow(this.policy.finishedMaxAgeMs, 'retention deleted finished matches', (before) => this.deps.storage.matches.deleteInactive(TERMINATED, before, this.policy.batchSize));
|
|
56
|
+
}
|
|
57
|
+
collectNeverStarted() {
|
|
58
|
+
return this.collectWindow(this.policy.lobbyMaxAgeMs, 'retention deleted lobbies that never started', (before) => this.deps.storage.matches.deleteInactive(NEVER_STARTED, before, this.policy.batchSize));
|
|
34
59
|
}
|
|
35
60
|
collectAbandonedLive() {
|
|
36
61
|
return this.collectWindow(this.policy.abandonedLiveMaxAgeMs, 'retention deleted long-abandoned live matches', (before) => this.deps.storage.matches.deleteAbandonedLive(before, this.policy.batchSize, true));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RetentionService.js","sourceRoot":"","sources":["../../src/services/RetentionService.ts"],"names":[],"mappings":"AAGA,
|
|
1
|
+
{"version":3,"file":"RetentionService.js","sourceRoot":"","sources":["../../src/services/RetentionService.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,6 +24,11 @@ export declare class TurnService {
|
|
|
24
24
|
private passesSinceFullScan;
|
|
25
25
|
constructor(deps: KernelDeps, publisher: EventPublisher);
|
|
26
26
|
submitOrders(principal: Principal, number: number, request: SubmitOrdersRequest): Promise<OwnSubmissionView>;
|
|
27
|
+
/**
|
|
28
|
+
* Give `playerId` an empty orders row in turn `number` if that turn is still open. Idempotent: a
|
|
29
|
+
* seat that already has a row keeps it untouched, and a sealed turn is never given one.
|
|
30
|
+
*/
|
|
31
|
+
topUpSeat(matchId: string, number: number, playerId: string): Promise<void>;
|
|
27
32
|
/** Seal `number` if its trigger condition holds. Returns whether THIS call sealed it. */
|
|
28
33
|
trySeal(matchId: string, number: number, trigger: SealTrigger): Promise<boolean>;
|
|
29
34
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TurnService.d.ts","sourceRoot":"","sources":["../../src/services/TurnService.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACvB,MAAM,4BAA4B,CAAA;AACnC,OAAO,EAIL,KAAK,KAAK,EAEX,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"TurnService.d.ts","sourceRoot":"","sources":["../../src/services/TurnService.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACvB,MAAM,4BAA4B,CAAA;AACnC,OAAO,EAIL,KAAK,KAAK,EAEX,MAAM,oBAAoB,CAAA;AAU3B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AACxC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAKtD,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,UAAU,CAAA;AAE9C,yFAAyF;AACzF,eAAO,MAAM,UAAU,IAAI,CAAA;AAmB3B;;;;;;;;;;GAUG;AACH,qBAAa,WAAW;IAKpB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAL5B,qGAAqG;IACrG,OAAO,CAAC,mBAAmB,CAAkB;IAE7C,YACmB,IAAI,EAAE,UAAU,EAChB,SAAS,EAAE,cAAc,EACxC;IAEE,YAAY,CAChB,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,iBAAiB,CAAC,CAyD5B;IAED;;;OAGG;IACG,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGhF;IAED,yFAAyF;IACnF,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CA+BrF;IAED;;;;;OAKG;YACW,YAAY;IAmE1B;;;;;;OAMG;YACW,sBAAsB;IAepC;;;;;;;OAOG;YACW,QAAQ;IAWtB;;;;OAIG;IACG,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAkE7D;IAED;;;;OAIG;IACG,KAAK,CAAC,KAAK,SAAM,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CA8CtE;YAEa,KAAK;IAiBb,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAoD5F;IAED,6FAA6F;YAC/E,oBAAoB;IAWlC;;;;;;;;;;;;;;;;;OAiBG;IACG,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAc1F;IAED;;;;;OAKG;IACG,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAExD;YAEa,iBAAiB;IAa/B,iFAAiF;IAC3E,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAsB7D;IAED,sFAAsF;YACxE,gBAAgB;IAQ9B,sFAAsF;IAChF,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAc/C;IAED,2FAA2F;IACrF,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAiG3D;IAED;;;;OAIG;YACW,iBAAiB;CA+BhC"}
|
|
@@ -2,7 +2,7 @@ import { foreignOps, } from '@chaos-overlords/contracts';
|
|
|
2
2
|
import { activePlayers, humanParticipants, isInProgress, } from '../domain/entities';
|
|
3
3
|
import { ConflictError, ValidationError } from '../domain/errors';
|
|
4
4
|
import { hashOrderDocument, hashOrderSet } from '../logic/crypto';
|
|
5
|
-
import { allActiveReady, assignSlots, evaluateConsensus, turnDeadline } from '../logic/turn-logic';
|
|
5
|
+
import { allActiveReady, assignSlots, evaluateConsensus, sealedByDeadline, turnDeadline, } from '../logic/turn-logic';
|
|
6
6
|
import { requireInProgress, requireParticipant, requireTurn } from './guards';
|
|
7
7
|
import { matchStartedEvent } from './MatchQueryService';
|
|
8
8
|
import { mergeSeatSummaries } from './SnapshotService';
|
|
@@ -13,7 +13,7 @@ export const FIRST_TURN = 1;
|
|
|
13
13
|
*
|
|
14
14
|
* A seal in flight is seconds old and a verdict interrupted after its compare-and-swap is too, so
|
|
15
15
|
* this window is generous by orders of magnitude for both. What it excludes is the standing
|
|
16
|
-
* population of a public server: matches deliberately kept `running` for
|
|
16
|
+
* population of a public server: matches deliberately kept `running` for weeks after everyone
|
|
17
17
|
* walked away, and matches parked in `desynced` because the host never uploaded a repair. Those
|
|
18
18
|
* used to be re-judged, and joined against, on every single tick forever.
|
|
19
19
|
*/
|
|
@@ -69,7 +69,14 @@ export class TurnService {
|
|
|
69
69
|
});
|
|
70
70
|
}
|
|
71
71
|
await this.restorePendingPlayer(player.id, match.id);
|
|
72
|
-
|
|
72
|
+
let previous = await this.deps.storage.turns.getOrderSummary(match.id, number, player.id);
|
|
73
|
+
if (previous === null) {
|
|
74
|
+
// A participant of the open turn without a row: every step that seats a player tops its
|
|
75
|
+
// row up, but each is best effort, and a process that died between one and the next left
|
|
76
|
+
// this seat unable to submit at all. Submitting is its own repair.
|
|
77
|
+
await this.topUpSeat(match.id, number, player.id);
|
|
78
|
+
previous = await this.deps.storage.turns.getOrderSummary(match.id, number, player.id);
|
|
79
|
+
}
|
|
73
80
|
const accepted = await this.deps.storage.turns.submitOrders(match.id, number, player.id, {
|
|
74
81
|
orders: request.orders,
|
|
75
82
|
ordersHash,
|
|
@@ -96,6 +103,15 @@ export class TurnService {
|
|
|
96
103
|
await this.trySeal(match.id, number, 'ready');
|
|
97
104
|
return own;
|
|
98
105
|
}
|
|
106
|
+
/**
|
|
107
|
+
* Give `playerId` an empty orders row in turn `number` if that turn is still open. Idempotent: a
|
|
108
|
+
* seat that already has a row keeps it untouched, and a sealed turn is never given one.
|
|
109
|
+
*/
|
|
110
|
+
async topUpSeat(matchId, number, playerId) {
|
|
111
|
+
const turn = await this.deps.storage.turns.get(matchId, number);
|
|
112
|
+
if (turn?.status === 'open')
|
|
113
|
+
await this.deps.storage.turns.open(turn, [playerId]);
|
|
114
|
+
}
|
|
99
115
|
/** Seal `number` if its trigger condition holds. Returns whether THIS call sealed it. */
|
|
100
116
|
async trySeal(matchId, number, trigger) {
|
|
101
117
|
const match = await this.deps.storage.matches.get(matchId);
|
|
@@ -160,7 +176,11 @@ export class TurnService {
|
|
|
160
176
|
this.deps.storage.players.listByMatch(match.id),
|
|
161
177
|
]);
|
|
162
178
|
const submitted = new Set(orders.filter((row) => row.ordersHash !== null).map((row) => row.playerId));
|
|
163
|
-
|
|
179
|
+
// Only a clock that ran out can make anyone absent. A ready seal is decided on the rows it
|
|
180
|
+
// read, every one of them ready; an empty row it finds now was topped up for a late seat in
|
|
181
|
+
// the window between that read and the seal, and that player was never given a chance.
|
|
182
|
+
const absentees = sealedByDeadline(turn) ? activePlayers(players) : [];
|
|
183
|
+
for (const player of absentees) {
|
|
164
184
|
// A seat with no row at all (a late joiner seated after this turn opened) was never
|
|
165
185
|
// asked for orders, so it is not absent; only a row that stayed empty is.
|
|
166
186
|
if (submitted.has(player.id) || !orders.some((row) => row.playerId === player.id))
|
|
@@ -257,7 +277,7 @@ export class TurnService {
|
|
|
257
277
|
const deadlineAt = hasAbsenceVote
|
|
258
278
|
? null
|
|
259
279
|
: turnDeadline(openedAt, match.settings.turnTimerSeconds);
|
|
260
|
-
const
|
|
280
|
+
const turn = {
|
|
261
281
|
matchId: match.id,
|
|
262
282
|
number,
|
|
263
283
|
status: 'open',
|
|
@@ -268,20 +288,32 @@ export class TurnService {
|
|
|
268
288
|
sealedSlots: null,
|
|
269
289
|
stateHash: null,
|
|
270
290
|
desyncedAt: null,
|
|
271
|
-
}
|
|
291
|
+
};
|
|
292
|
+
const created = await this.deps.storage.turns.open(turn, players.map((player) => player.id));
|
|
272
293
|
// A desynced match counts: a repaired seal must still point `currentTurn` at the turn that is
|
|
273
294
|
// actually open, even though nobody may submit to it until the pause lifts.
|
|
274
|
-
await this.deps.storage.matches.
|
|
275
|
-
currentTurn: number,
|
|
276
|
-
updatedAt: openedAt,
|
|
277
|
-
});
|
|
295
|
+
const advanced = await this.deps.storage.matches.advanceCurrentTurn(match.id, number, openedAt);
|
|
278
296
|
if (created) {
|
|
297
|
+
// A late seat can commit after the first roster read and top up the previous turn before
|
|
298
|
+
// this one exists. Re-read after publishing the new currentTurn so either this pass or the
|
|
299
|
+
// joiner's post-commit pass sees the seat and creates its orders row. Only seats the first
|
|
300
|
+
// read missed need a row; everyone else got one above.
|
|
301
|
+
const asked = new Set(players.map((player) => player.id));
|
|
302
|
+
const missed = humanParticipants(await this.deps.storage.players.listByMatch(match.id))
|
|
303
|
+
.map((player) => player.id)
|
|
304
|
+
.filter((id) => !asked.has(id));
|
|
305
|
+
if (missed.length > 0)
|
|
306
|
+
await this.deps.storage.turns.open(turn, missed);
|
|
279
307
|
await this.publisher.publish(match.id, {
|
|
280
308
|
type: 'turn.opened',
|
|
281
309
|
payload: { turn: number, deadlineAt: deadlineAt?.toISOString() ?? null },
|
|
282
310
|
});
|
|
283
311
|
}
|
|
284
|
-
|
|
312
|
+
// Only the call that created the turn or moved `currentTurn` onto it arms the deadline. Both
|
|
313
|
+
// runtimes keep one pending deadline per match, so a late sweep re-opening a turn the match
|
|
314
|
+
// has already moved past would otherwise replace the live turn's timer with one for a sealed
|
|
315
|
+
// turn, leaving the live deadline to the next sweep.
|
|
316
|
+
if (deadlineAt && (created || advanced)) {
|
|
285
317
|
try {
|
|
286
318
|
await this.deps.scheduler.schedule({ matchId: match.id, turn: number, dueAt: deadlineAt });
|
|
287
319
|
}
|