Path: blob/master/src/packages/backend/conat/persist.ts
5883 views
/*12To test having multiple persist servers at once in dev mode, start3up your dev server. Then do the following in nodejs to create an4additional persist server:56require("@cocalc/backend/conat/persist").initPersistServer()78*/910import "./index";11import betterSqlite3 from "better-sqlite3";12import { initContext } from "@cocalc/conat/persist/context";13import { compress, decompress } from "zstd-napi";14import { syncFiles } from "@cocalc/backend/data";15import ensureContainingDirectoryExists from "@cocalc/backend/misc/ensure-containing-directory-exists";16import { statSync, copyFileSync } from "node:fs";1718initContext({19betterSqlite3,20compress,21decompress,22syncFiles,23ensureContainingDirectoryExists,24statSync,25copyFileSync,26});2728export { pstream } from "@cocalc/conat/persist/storage";29import { server } from "@cocalc/conat/persist/server";30export { server };31import { conat } from "./conat";32export { initLoadBalancer } from "@cocalc/conat/persist/load-balancer";3334const persistServers: any[] = [];3536export function initPersistServer({37id,38clusterMode,39}: {40id?: string;41clusterMode?: boolean;42}) {43const persistServer = server({44client: conat({ noCache: persistServers.length > 0 }),45id,46clusterMode,47});48persistServers.push(persistServer);49}5051export function close() {52for (const persistServer of persistServers) {53persistServer.end(); // end is a bit more graceful54}55persistServers.length = 0;56}575859