Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
sagemathinc
GitHub Repository: sagemathinc/cocalc
Path: blob/master/src/packages/backend/conat/persist.ts
5883 views
1
/*
2
3
To test having multiple persist servers at once in dev mode, start
4
up your dev server. Then do the following in nodejs to create an
5
additional persist server:
6
7
require("@cocalc/backend/conat/persist").initPersistServer()
8
9
*/
10
11
import "./index";
12
import betterSqlite3 from "better-sqlite3";
13
import { initContext } from "@cocalc/conat/persist/context";
14
import { compress, decompress } from "zstd-napi";
15
import { syncFiles } from "@cocalc/backend/data";
16
import ensureContainingDirectoryExists from "@cocalc/backend/misc/ensure-containing-directory-exists";
17
import { statSync, copyFileSync } from "node:fs";
18
19
initContext({
20
betterSqlite3,
21
compress,
22
decompress,
23
syncFiles,
24
ensureContainingDirectoryExists,
25
statSync,
26
copyFileSync,
27
});
28
29
export { pstream } from "@cocalc/conat/persist/storage";
30
import { server } from "@cocalc/conat/persist/server";
31
export { server };
32
import { conat } from "./conat";
33
export { initLoadBalancer } from "@cocalc/conat/persist/load-balancer";
34
35
const persistServers: any[] = [];
36
37
export function initPersistServer({
38
id,
39
clusterMode,
40
}: {
41
id?: string;
42
clusterMode?: boolean;
43
}) {
44
const persistServer = server({
45
client: conat({ noCache: persistServers.length > 0 }),
46
id,
47
clusterMode,
48
});
49
persistServers.push(persistServer);
50
}
51
52
export function close() {
53
for (const persistServer of persistServers) {
54
persistServer.end(); // end is a bit more graceful
55
}
56
persistServers.length = 0;
57
}
58
59