@supalive/core 0.1.4 → 0.1.6
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/README.md +17 -2
- package/dist/bytes-AuEkyxeU.js +19 -0
- package/dist/bytes-AuEkyxeU.js.map +1 -0
- package/dist/codec-BHAmGEIQ.js +62 -0
- package/dist/codec-BHAmGEIQ.js.map +1 -0
- package/dist/helper-CiacMqje.d.ts +14 -0
- package/dist/helper-CiacMqje.d.ts.map +1 -0
- package/dist/helper-wGbzz6zo.js +42 -0
- package/dist/helper-wGbzz6zo.js.map +1 -0
- package/dist/index-CaWMDqq0.d.ts +1754 -0
- package/dist/index-CaWMDqq0.d.ts.map +1 -0
- package/dist/mysql-Cxd4Uq5p.d.ts +104 -0
- package/dist/mysql-Cxd4Uq5p.d.ts.map +1 -0
- package/dist/mysql-bvnjYWvZ.js +570 -0
- package/dist/mysql-bvnjYWvZ.js.map +1 -0
- package/dist/overlap-checker-Ct_HP_iB.js +187 -0
- package/dist/overlap-checker-Ct_HP_iB.js.map +1 -0
- package/dist/postgres-B8u1YN8X.js +824 -0
- package/dist/postgres-B8u1YN8X.js.map +1 -0
- package/dist/postgres-Ck-xt72U.d.ts +108 -0
- package/dist/postgres-Ck-xt72U.d.ts.map +1 -0
- package/dist/procedure-DX87tyef.js +124 -0
- package/dist/procedure-DX87tyef.js.map +1 -0
- package/dist/query-Bh0RNxDz.js +673 -0
- package/dist/query-Bh0RNxDz.js.map +1 -0
- package/dist/realtime_db-DOCgqbwi.js +247 -0
- package/dist/realtime_db-DOCgqbwi.js.map +1 -0
- package/dist/router-DlTYWpop.js +81 -0
- package/dist/router-DlTYWpop.js.map +1 -0
- package/dist/schema-Dd7u0A1L.js +109 -0
- package/dist/schema-Dd7u0A1L.js.map +1 -0
- package/dist/src/client/index.d.ts +2 -17
- package/dist/src/client/index.js +1152 -18
- package/dist/src/client/index.js.map +1 -1
- package/dist/src/exports/mysql.d.ts +2 -2
- package/dist/src/exports/mysql.js +2 -2
- package/dist/src/exports/postgres.d.ts +2 -2
- package/dist/src/exports/postgres.js +2 -2
- package/dist/src/exports/procedure.d.ts +3 -5
- package/dist/src/exports/procedure.js +6 -5
- package/dist/src/exports/schema-sql.d.ts +18 -0
- package/dist/src/exports/schema-sql.d.ts.map +1 -0
- package/dist/src/exports/schema-sql.js +161 -0
- package/dist/src/exports/schema-sql.js.map +1 -0
- package/dist/src/exports/server.d.ts +368 -2
- package/dist/src/exports/server.d.ts.map +1 -1
- package/dist/src/exports/server.js +1346 -2
- package/dist/src/exports/server.js.map +1 -1
- package/dist/src/exports/subscription-manager-worker-entry.d.ts +1 -0
- package/dist/src/exports/subscription-manager-worker-entry.js +115 -0
- package/dist/src/exports/subscription-manager-worker-entry.js.map +1 -0
- package/dist/src/exports/types.d.ts +4 -6
- package/dist/src/exports/types.js +5 -6
- package/dist/subscription-worker-pahX0zxg.js +511 -0
- package/dist/subscription-worker-pahX0zxg.js.map +1 -0
- package/dist/types_client_rpc-CIsjQQGG.js +105 -0
- package/dist/types_client_rpc-CIsjQQGG.js.map +1 -0
- package/dist/types_db-DXj_l9n-.js +168 -0
- package/dist/types_db-DXj_l9n-.js.map +1 -0
- package/dist/types_server-Dk6o_B7N.js +24 -0
- package/dist/types_server-Dk6o_B7N.js.map +1 -0
- package/dist/types_server-TFo6SWDH.d.ts +216 -0
- package/dist/types_server-TFo6SWDH.d.ts.map +1 -0
- package/package.json +7 -3
- package/dist/src/client/caller_client.d.ts +0 -42
- package/dist/src/client/caller_client.d.ts.map +0 -1
- package/dist/src/client/caller_client.js +0 -77
- package/dist/src/client/caller_client.js.map +0 -1
- package/dist/src/client/client.d.ts +0 -149
- package/dist/src/client/client.d.ts.map +0 -1
- package/dist/src/client/client.js +0 -308
- package/dist/src/client/client.js.map +0 -1
- package/dist/src/client/index.d.ts.map +0 -1
- package/dist/src/client/sub_key.d.ts +0 -20
- package/dist/src/client/sub_key.d.ts.map +0 -1
- package/dist/src/client/sub_key.js +0 -37
- package/dist/src/client/sub_key.js.map +0 -1
- package/dist/src/client/ws_client_manager.d.ts +0 -268
- package/dist/src/client/ws_client_manager.d.ts.map +0 -1
- package/dist/src/client/ws_client_manager.js +0 -1013
- package/dist/src/client/ws_client_manager.js.map +0 -1
- package/dist/src/config.d.ts +0 -117
- package/dist/src/config.d.ts.map +0 -1
- package/dist/src/config.js +0 -2
- package/dist/src/config.js.map +0 -1
- package/dist/src/db/bytes.d.ts +0 -4
- package/dist/src/db/bytes.d.ts.map +0 -1
- package/dist/src/db/bytes.js +0 -24
- package/dist/src/db/bytes.js.map +0 -1
- package/dist/src/db/cache.d.ts +0 -30
- package/dist/src/db/cache.d.ts.map +0 -1
- package/dist/src/db/cache.js +0 -153
- package/dist/src/db/cache.js.map +0 -1
- package/dist/src/db/codec.d.ts +0 -10
- package/dist/src/db/codec.d.ts.map +0 -1
- package/dist/src/db/codec.js +0 -73
- package/dist/src/db/codec.js.map +0 -1
- package/dist/src/db/context.d.ts +0 -28
- package/dist/src/db/context.d.ts.map +0 -1
- package/dist/src/db/context.js +0 -147
- package/dist/src/db/context.js.map +0 -1
- package/dist/src/db/db.d.ts +0 -154
- package/dist/src/db/db.d.ts.map +0 -1
- package/dist/src/db/db.js +0 -23
- package/dist/src/db/db.js.map +0 -1
- package/dist/src/db/mysql.d.ts +0 -120
- package/dist/src/db/mysql.d.ts.map +0 -1
- package/dist/src/db/mysql.js +0 -708
- package/dist/src/db/mysql.js.map +0 -1
- package/dist/src/db/postgres.d.ts +0 -116
- package/dist/src/db/postgres.d.ts.map +0 -1
- package/dist/src/db/postgres.js +0 -998
- package/dist/src/db/postgres.js.map +0 -1
- package/dist/src/db/query.d.ts +0 -174
- package/dist/src/db/query.d.ts.map +0 -1
- package/dist/src/db/query.js +0 -790
- package/dist/src/db/query.js.map +0 -1
- package/dist/src/db/query_definition.d.ts +0 -54
- package/dist/src/db/query_definition.d.ts.map +0 -1
- package/dist/src/db/query_definition.js +0 -47
- package/dist/src/db/query_definition.js.map +0 -1
- package/dist/src/db/realtime_db.d.ts +0 -19
- package/dist/src/db/realtime_db.d.ts.map +0 -1
- package/dist/src/db/realtime_db.js +0 -98
- package/dist/src/db/realtime_db.js.map +0 -1
- package/dist/src/db/schema.d.ts +0 -110
- package/dist/src/db/schema.d.ts.map +0 -1
- package/dist/src/db/schema.js +0 -47
- package/dist/src/db/schema.js.map +0 -1
- package/dist/src/db/types_client_rpc.d.ts +0 -157
- package/dist/src/db/types_client_rpc.d.ts.map +0 -1
- package/dist/src/db/types_client_rpc.js +0 -106
- package/dist/src/db/types_client_rpc.js.map +0 -1
- package/dist/src/db/types_db.d.ts +0 -236
- package/dist/src/db/types_db.d.ts.map +0 -1
- package/dist/src/db/types_db.js +0 -188
- package/dist/src/db/types_db.js.map +0 -1
- package/dist/src/exports/mysql.d.ts.map +0 -1
- package/dist/src/exports/mysql.js.map +0 -1
- package/dist/src/exports/postgres.d.ts.map +0 -1
- package/dist/src/exports/postgres.js.map +0 -1
- package/dist/src/exports/procedure.d.ts.map +0 -1
- package/dist/src/exports/procedure.js.map +0 -1
- package/dist/src/exports/types.d.ts.map +0 -1
- package/dist/src/exports/types.js.map +0 -1
- package/dist/src/helper.d.ts +0 -11
- package/dist/src/helper.d.ts.map +0 -1
- package/dist/src/helper.js +0 -45
- package/dist/src/helper.js.map +0 -1
- package/dist/src/logger.d.ts +0 -7
- package/dist/src/logger.d.ts.map +0 -1
- package/dist/src/logger.js +0 -47
- package/dist/src/logger.js.map +0 -1
- package/dist/src/router/index.d.ts +0 -4
- package/dist/src/router/index.d.ts.map +0 -1
- package/dist/src/router/index.js +0 -4
- package/dist/src/router/index.js.map +0 -1
- package/dist/src/router/procedure.d.ts +0 -204
- package/dist/src/router/procedure.d.ts.map +0 -1
- package/dist/src/router/procedure.js +0 -122
- package/dist/src/router/procedure.js.map +0 -1
- package/dist/src/router/router.d.ts +0 -88
- package/dist/src/router/router.d.ts.map +0 -1
- package/dist/src/router/router.js +0 -88
- package/dist/src/router/router.js.map +0 -1
- package/dist/src/server/hash.d.ts +0 -12
- package/dist/src/server/hash.d.ts.map +0 -1
- package/dist/src/server/hash.js +0 -20
- package/dist/src/server/hash.js.map +0 -1
- package/dist/src/server/hash.test.d.ts +0 -2
- package/dist/src/server/hash.test.d.ts.map +0 -1
- package/dist/src/server/hash.test.js +0 -43
- package/dist/src/server/hash.test.js.map +0 -1
- package/dist/src/server/index.d.ts +0 -9
- package/dist/src/server/index.d.ts.map +0 -1
- package/dist/src/server/index.js +0 -8
- package/dist/src/server/index.js.map +0 -1
- package/dist/src/server/overlap-checker.d.ts +0 -18
- package/dist/src/server/overlap-checker.d.ts.map +0 -1
- package/dist/src/server/overlap-checker.js +0 -247
- package/dist/src/server/overlap-checker.js.map +0 -1
- package/dist/src/server/sub_hash.d.ts +0 -23
- package/dist/src/server/sub_hash.d.ts.map +0 -1
- package/dist/src/server/sub_hash.js +0 -38
- package/dist/src/server/sub_hash.js.map +0 -1
- package/dist/src/server/subscription-manager-client.d.ts +0 -120
- package/dist/src/server/subscription-manager-client.d.ts.map +0 -1
- package/dist/src/server/subscription-manager-client.js +0 -207
- package/dist/src/server/subscription-manager-client.js.map +0 -1
- package/dist/src/server/subscription-manager-types.d.ts +0 -168
- package/dist/src/server/subscription-manager-types.d.ts.map +0 -1
- package/dist/src/server/subscription-manager-types.js +0 -94
- package/dist/src/server/subscription-manager-types.js.map +0 -1
- package/dist/src/server/subscription-manager-worker-entry.d.ts +0 -2
- package/dist/src/server/subscription-manager-worker-entry.d.ts.map +0 -1
- package/dist/src/server/subscription-manager-worker-entry.js +0 -127
- package/dist/src/server/subscription-manager-worker-entry.js.map +0 -1
- package/dist/src/server/subscription-manager-worker-protocol.d.ts +0 -40
- package/dist/src/server/subscription-manager-worker-protocol.d.ts.map +0 -1
- package/dist/src/server/subscription-manager-worker-protocol.js +0 -20
- package/dist/src/server/subscription-manager-worker-protocol.js.map +0 -1
- package/dist/src/server/subscription-manager.d.ts +0 -32
- package/dist/src/server/subscription-manager.d.ts.map +0 -1
- package/dist/src/server/subscription-manager.js +0 -249
- package/dist/src/server/subscription-manager.js.map +0 -1
- package/dist/src/server/subscription-manager.test.d.ts +0 -2
- package/dist/src/server/subscription-manager.test.d.ts.map +0 -1
- package/dist/src/server/subscription-manager.test.js +0 -610
- package/dist/src/server/subscription-manager.test.js.map +0 -1
- package/dist/src/server/subscription-worker.d.ts +0 -32
- package/dist/src/server/subscription-worker.d.ts.map +0 -1
- package/dist/src/server/subscription-worker.js +0 -190
- package/dist/src/server/subscription-worker.js.map +0 -1
- package/dist/src/server/supalive-server.d.ts +0 -158
- package/dist/src/server/supalive-server.d.ts.map +0 -1
- package/dist/src/server/supalive-server.js +0 -1048
- package/dist/src/server/supalive-server.js.map +0 -1
- package/dist/src/server/types_server.d.ts +0 -96
- package/dist/src/server/types_server.d.ts.map +0 -1
- package/dist/src/server/types_server.js +0 -36
- package/dist/src/server/types_server.js.map +0 -1
- package/dist/tsconfig.tsbuildinfo +0 -1
|
@@ -1,249 +0,0 @@
|
|
|
1
|
-
import { Server as WebSocketServer } from "rpc-websockets";
|
|
2
|
-
import { Worker } from "node:worker_threads";
|
|
3
|
-
import { fileURLToPath } from "node:url";
|
|
4
|
-
import { fnv1a32 } from "./hash";
|
|
5
|
-
import { subscriptionManagerDataPack } from "./subscription-manager-client";
|
|
6
|
-
import { logger as baseLogger, logLevelOf } from "../logger";
|
|
7
|
-
import { groupByToMap } from "../helper";
|
|
8
|
-
import { MsgType, } from "./subscription-manager-worker-protocol";
|
|
9
|
-
// Re-export SubscriptionWorker so existing test imports
|
|
10
|
-
// (`import { SubscriptionWorker } from "./subscription-manager"`) keep working.
|
|
11
|
-
export { SubscriptionWorker } from "./subscription-worker";
|
|
12
|
-
const logger = baseLogger.child({ name: "SUBS_MGR" }, { level: logLevelOf("SUBS_MANAGER_SERVER_LOG_LEVEL") });
|
|
13
|
-
// Resolve the entry script next to this compiled file. `import.meta.url` works
|
|
14
|
-
// for both Bun (running TS source) and Node (running emitted JS) — we just
|
|
15
|
-
// swap the extension based on the current module's path.
|
|
16
|
-
function resolveWorkerEntry() {
|
|
17
|
-
const here = new URL(import.meta.url);
|
|
18
|
-
const isTs = here.pathname.endsWith(".ts");
|
|
19
|
-
const ext = isTs ? ".ts" : ".js";
|
|
20
|
-
return {
|
|
21
|
-
url: new URL(`./subscription-manager-worker-entry${ext}`, import.meta.url),
|
|
22
|
-
isTs,
|
|
23
|
-
};
|
|
24
|
-
}
|
|
25
|
-
// When the entry is a `.ts` file and we're running on Node (not Bun), the
|
|
26
|
-
// worker thread inherits no module loader — Node can strip types but its bare
|
|
27
|
-
// ESM resolver requires explicit file extensions, which our extensionless
|
|
28
|
-
// internal imports don't satisfy. Register tsx as the worker loader so it
|
|
29
|
-
// resolves the same way the parent module does.
|
|
30
|
-
function workerExecArgv(isTs) {
|
|
31
|
-
if (!isTs)
|
|
32
|
-
return undefined;
|
|
33
|
-
if (typeof globalThis.Bun !== "undefined")
|
|
34
|
-
return undefined;
|
|
35
|
-
return ["--import", "tsx"];
|
|
36
|
-
}
|
|
37
|
-
class SubscriptionWorkerHandle {
|
|
38
|
-
id;
|
|
39
|
-
worker;
|
|
40
|
-
pending = new Map();
|
|
41
|
-
nextReqId = 1;
|
|
42
|
-
readyPromise;
|
|
43
|
-
constructor(id, init) {
|
|
44
|
-
this.id = id;
|
|
45
|
-
const entry = resolveWorkerEntry();
|
|
46
|
-
this.worker = new Worker(fileURLToPath(entry.url), {
|
|
47
|
-
execArgv: workerExecArgv(entry.isTs),
|
|
48
|
-
});
|
|
49
|
-
this.worker.on("message", (res) => {
|
|
50
|
-
const pending = this.pending.get(res.reqId);
|
|
51
|
-
if (!pending)
|
|
52
|
-
return;
|
|
53
|
-
this.pending.delete(res.reqId);
|
|
54
|
-
if (res.ok) {
|
|
55
|
-
pending.resolve(res.result);
|
|
56
|
-
}
|
|
57
|
-
else {
|
|
58
|
-
const err = new Error(res.error.message);
|
|
59
|
-
if (res.error.stack)
|
|
60
|
-
err.stack = res.error.stack;
|
|
61
|
-
pending.reject(err);
|
|
62
|
-
}
|
|
63
|
-
});
|
|
64
|
-
this.worker.on("error", (err) => {
|
|
65
|
-
logger.error(err, `[worker ${this.id}] worker thread errored`);
|
|
66
|
-
const e = err instanceof Error ? err : new Error(String(err));
|
|
67
|
-
for (const [, p] of this.pending)
|
|
68
|
-
p.reject(e);
|
|
69
|
-
this.pending.clear();
|
|
70
|
-
});
|
|
71
|
-
this.readyPromise = this.send(MsgType.Init, init).then(() => { });
|
|
72
|
-
}
|
|
73
|
-
ready() {
|
|
74
|
-
return this.readyPromise;
|
|
75
|
-
}
|
|
76
|
-
send(type, payload) {
|
|
77
|
-
const reqId = this.nextReqId++;
|
|
78
|
-
return new Promise((resolve, reject) => {
|
|
79
|
-
this.pending.set(reqId, {
|
|
80
|
-
resolve: resolve,
|
|
81
|
-
reject,
|
|
82
|
-
});
|
|
83
|
-
const req = { type, reqId, payload };
|
|
84
|
-
this.worker.postMessage(req);
|
|
85
|
-
});
|
|
86
|
-
}
|
|
87
|
-
async shutdown() {
|
|
88
|
-
try {
|
|
89
|
-
await this.send(MsgType.Shutdown, null);
|
|
90
|
-
}
|
|
91
|
-
catch (_) { /* ignore */ }
|
|
92
|
-
await this.worker.terminate();
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
// ─── Dispatcher ──────────────────────────────────────────────────────────────
|
|
96
|
-
/**
|
|
97
|
-
* One process per deployment. Routes each subscription operation to one of N
|
|
98
|
-
* worker threads by hashing subId. Worker threads run in parallel on separate
|
|
99
|
-
* CPU cores; this dispatcher does no Zod parsing — it reads `subId` directly
|
|
100
|
-
* from the decoded payload (the internal channel is trusted) and forwards the
|
|
101
|
-
* raw payload. The worker validates and parses with Zod before executing.
|
|
102
|
-
*/
|
|
103
|
-
export class SubscriptionManager {
|
|
104
|
-
wss;
|
|
105
|
-
port;
|
|
106
|
-
workers;
|
|
107
|
-
pruneInterval = null;
|
|
108
|
-
static PRUNE_INTERVAL_MS = 30 * 60 * 1000;
|
|
109
|
-
constructor(config) {
|
|
110
|
-
this.port = config.port;
|
|
111
|
-
this.wss = new WebSocketServer({ port: this.port }, subscriptionManagerDataPack);
|
|
112
|
-
this.wss.dataPack = subscriptionManagerDataPack;
|
|
113
|
-
const numWorkers = resolveWorkerCount(config.workers);
|
|
114
|
-
const maxConnectionsPerWorker = resolveMaxConnectionsPerWorker(config, numWorkers);
|
|
115
|
-
logger.info(`Spawning ${numWorkers} subscription worker${numWorkers === 1 ? "" : "s"}`);
|
|
116
|
-
this.workers = Array.from({ length: numWorkers }, (_, i) => new SubscriptionWorkerHandle(i + 1, {
|
|
117
|
-
workerId: i + 1,
|
|
118
|
-
database: config.database,
|
|
119
|
-
upstash: config.upstash,
|
|
120
|
-
cacheTTLSeconds: config.cacheTTLSeconds,
|
|
121
|
-
maxConnectionsPerWorker,
|
|
122
|
-
}));
|
|
123
|
-
this.registerMethods();
|
|
124
|
-
}
|
|
125
|
-
async start() {
|
|
126
|
-
await Promise.all(this.workers.map((w) => w.ready()));
|
|
127
|
-
logger.info(`Listening on port ${this.port}`);
|
|
128
|
-
this.pruneInterval = setInterval(() => { this.pruneCommitLogs().catch((err) => logger.error(err, "commit_logs prune failed")); }, SubscriptionManager.PRUNE_INTERVAL_MS);
|
|
129
|
-
if (this.pruneInterval && typeof this.pruneInterval.unref === "function") {
|
|
130
|
-
this.pruneInterval.unref();
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
async stop() {
|
|
134
|
-
if (this.pruneInterval) {
|
|
135
|
-
clearInterval(this.pruneInterval);
|
|
136
|
-
this.pruneInterval = null;
|
|
137
|
-
}
|
|
138
|
-
this.wss.close();
|
|
139
|
-
await Promise.all(this.workers.map((w) => w.shutdown()));
|
|
140
|
-
logger.info("Stopped");
|
|
141
|
-
}
|
|
142
|
-
async pruneCommitLogs() {
|
|
143
|
-
const minPerWorker = await Promise.all(this.workers.map((w) => w.send(MsgType.MinSubscriptionTs, null)));
|
|
144
|
-
let floor = null;
|
|
145
|
-
for (const m of minPerWorker) {
|
|
146
|
-
if (m === null)
|
|
147
|
-
continue;
|
|
148
|
-
if (floor === null || m < floor)
|
|
149
|
-
floor = m;
|
|
150
|
-
}
|
|
151
|
-
if (floor === null) {
|
|
152
|
-
const latest = await this.workers[0].send(MsgType.LatestSnapshotTs, null);
|
|
153
|
-
if (latest <= 0n)
|
|
154
|
-
return;
|
|
155
|
-
floor = latest;
|
|
156
|
-
}
|
|
157
|
-
const deleted = await this.workers[0].send(MsgType.Prune, floor);
|
|
158
|
-
if (deleted > 0n) {
|
|
159
|
-
logger.info(`pruned ${deleted} commit_logs older than ts=${floor}`);
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
workerCount() {
|
|
163
|
-
return this.workers.length;
|
|
164
|
-
}
|
|
165
|
-
workerIndexFor(subId) {
|
|
166
|
-
return fnv1a32(subId) % this.workers.length;
|
|
167
|
-
}
|
|
168
|
-
workerFor(subId) {
|
|
169
|
-
return this.workers[this.workerIndexFor(subId)];
|
|
170
|
-
}
|
|
171
|
-
registerMethods() {
|
|
172
|
-
this.wss.register("registerSubscription", this.registerSubscription.bind(this));
|
|
173
|
-
this.wss.register("registerSubscriptionBatch", this.registerSubscriptionBatch.bind(this));
|
|
174
|
-
this.wss.register("updateSubscriptionReadSet", this.updateSubscriptionReadSet.bind(this));
|
|
175
|
-
this.wss.register("invalidateWriteset", this.invalidateWriteset.bind(this));
|
|
176
|
-
this.wss.register("unregisterSubscription", this.unregisterSubscription.bind(this));
|
|
177
|
-
this.wss.register("unregisterSubscriptions", this.unregisterSubscriptions.bind(this));
|
|
178
|
-
}
|
|
179
|
-
readSubId(params) {
|
|
180
|
-
return params.subId;
|
|
181
|
-
}
|
|
182
|
-
async registerSubscription(params) {
|
|
183
|
-
const subId = this.readSubId(params);
|
|
184
|
-
return this.workerFor(subId).send(MsgType.Register, params);
|
|
185
|
-
}
|
|
186
|
-
async registerSubscriptionBatch(params) {
|
|
187
|
-
// Group entries by destination worker, dispatch one batch per worker, then
|
|
188
|
-
// restore the original order.
|
|
189
|
-
const arr = params;
|
|
190
|
-
const tagged = arr.map((p, index) => ({ index, p, worker: this.workerFor(p.subId) }));
|
|
191
|
-
const byWorker = groupByToMap(tagged, (t) => t.worker);
|
|
192
|
-
const settled = await Promise.all([...byWorker.entries()].map(async ([worker, items]) => {
|
|
193
|
-
const results = await worker.send(MsgType.RegisterBatch, items.map((t) => t.p));
|
|
194
|
-
return items.map((t, i) => ({ index: t.index, result: results[i] }));
|
|
195
|
-
}));
|
|
196
|
-
const result = new Array(arr.length);
|
|
197
|
-
for (const { index, result: r } of settled.flat()) {
|
|
198
|
-
result[index] = r;
|
|
199
|
-
}
|
|
200
|
-
return result;
|
|
201
|
-
}
|
|
202
|
-
async updateSubscriptionReadSet(params) {
|
|
203
|
-
const subId = this.readSubId(params);
|
|
204
|
-
return this.workerFor(subId).send(MsgType.UpdateReadSet, params);
|
|
205
|
-
}
|
|
206
|
-
async unregisterSubscription(params) {
|
|
207
|
-
const subId = this.readSubId(params);
|
|
208
|
-
return this.workerFor(subId).send(MsgType.Unregister, params);
|
|
209
|
-
}
|
|
210
|
-
async unregisterSubscriptions(params) {
|
|
211
|
-
const arr = params;
|
|
212
|
-
const tagged = arr.map((p, index) => ({ index, p, worker: this.workerFor(p.subId) }));
|
|
213
|
-
const byWorker = groupByToMap(tagged, (t) => t.worker);
|
|
214
|
-
const settled = await Promise.all([...byWorker.entries()].map(async ([worker, items]) => {
|
|
215
|
-
const results = await worker.send(MsgType.Unregisters, items.map((t) => t.p));
|
|
216
|
-
return items.map((t, i) => ({ index: t.index, result: results[i] }));
|
|
217
|
-
}));
|
|
218
|
-
const result = new Array(arr.length);
|
|
219
|
-
for (const { index, result: r } of settled.flat()) {
|
|
220
|
-
result[index] = r;
|
|
221
|
-
}
|
|
222
|
-
return result;
|
|
223
|
-
}
|
|
224
|
-
async invalidateWriteset(params) {
|
|
225
|
-
// Fan the raw payload out to every worker. Each parses its own copy of the
|
|
226
|
-
// writeSet (cheap relative to the scan) and returns its affected subs.
|
|
227
|
-
const perWorker = await Promise.all(this.workers.map((w) => w.send(MsgType.Invalidate, params)));
|
|
228
|
-
return { affected: perWorker.flat() };
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
function resolveWorkerCount(configured) {
|
|
232
|
-
if (typeof configured === "number" && configured > 0)
|
|
233
|
-
return Math.floor(configured);
|
|
234
|
-
const envVal = process.env.SUPALIVE_SUB_MANAGER_WORKERS;
|
|
235
|
-
if (envVal) {
|
|
236
|
-
const n = parseInt(envVal, 10);
|
|
237
|
-
if (Number.isFinite(n) && n > 0)
|
|
238
|
-
return n;
|
|
239
|
-
}
|
|
240
|
-
return 1;
|
|
241
|
-
}
|
|
242
|
-
function resolveMaxConnectionsPerWorker(config, workers) {
|
|
243
|
-
if (config.maxConnectionsPerWorker && config.maxConnectionsPerWorker > 0) {
|
|
244
|
-
return Math.floor(config.maxConnectionsPerWorker);
|
|
245
|
-
}
|
|
246
|
-
const total = config.database.maxConnections ?? (config.database.type === "mysql" ? 20 : 10);
|
|
247
|
-
return Math.max(1, Math.floor(total / workers));
|
|
248
|
-
}
|
|
249
|
-
//# sourceMappingURL=subscription-manager.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"subscription-manager.js","sourceRoot":"","sources":["../../../src/server/subscription-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"subscription-manager.test.d.ts","sourceRoot":"","sources":["../../../src/server/subscription-manager.test.ts"],"names":[],"mappings":""}
|