@cocalc/server
Version:
CoCalc server functionality: functions used by either the hub and the next.js server
34 lines (28 loc) • 992 B
text/typescript
import { getServerSettings } from "@cocalc/server/settings";
import { getProject } from "@cocalc/server/projects/control";
import LRU from "lru-cache";
import getLogger from "@cocalc/backend/logger";
const logger = getLogger("project-connection:handle-version");
const restarted = new LRU<string, true>({
maxAge: 15 * 1000 * 60, // never try to restart more than once every 15 minutes
});
export default async function handleVersion(
project_id: string,
version: number
) : Promise<void> {
if (restarted.has(project_id)) return;
// Restart project if version of project code is too old.
const { version_min_project } = await getServerSettings();
if (!version_min_project || version_min_project <= version) return;
restarted.set(project_id, true);
const project = getProject(project_id);
try {
await project.restart();
} catch (err) {
logger.debug(
"WARNING -- error restarting project due to version too old",
project_id,
err
);
}
}