aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--package.json3
-rw-r--r--src/server/ChildProcessUtilities/daemon/session.ts25
-rw-r--r--src/typings/index.d.ts1
3 files changed, 7 insertions, 22 deletions
diff --git a/package.json b/package.json
index 77a521e27..c58f542fc 100644
--- a/package.json
+++ b/package.json
@@ -161,6 +161,7 @@
"js-datepicker": "^4.6.6",
"jsonwebtoken": "^8.5.0",
"jsx-to-string": "^1.4.0",
+ "kill-port": "^1.6.0",
"lodash": "^4.17.15",
"mobile-detect": "^1.4.3",
"mobx": "^5.15.0",
@@ -231,4 +232,4 @@
"xoauth2": "^1.2.0",
"youtube": "^0.1.0"
}
-} \ No newline at end of file
+}
diff --git a/src/server/ChildProcessUtilities/daemon/session.ts b/src/server/ChildProcessUtilities/daemon/session.ts
index 9e082e665..41eb6976e 100644
--- a/src/server/ChildProcessUtilities/daemon/session.ts
+++ b/src/server/ChildProcessUtilities/daemon/session.ts
@@ -6,7 +6,7 @@ import { MailOptions } from "nodemailer/lib/json-transport";
import { writeFileSync, appendFileSync, existsSync, mkdirSync } from "fs";
import { resolve } from 'path';
import { ChildProcess, exec } from "child_process";
-import { ProcessFactory } from "../ProcessFactory";
+import * as killport from "kill-port";
const identifier = yellow("__daemon__:");
@@ -79,6 +79,7 @@ async function listen() {
restarting = true;
addLogEntry("Detected a server crash", red);
current_backup?.kill();
+ await killport(1050, 'tcp');
await log_execution({
startMessage: identifier + " Sending crash notification email",
endMessage: ({ error, result }) => {
@@ -88,26 +89,8 @@ async function listen() {
action: async () => notify(error || "Hmm, no error to report..."),
color: cyan
});
- await log_execution({
- startMessage: identifier + " Initiating server restart",
- endMessage: ({ result, error }) => {
- const success = error === null && result !== undefined;
- return identifier + success ? " Child process spawned..." : ` An error occurred while attempting to restart the server:\n${error}`;
- },
- action: async () => {
- return new Promise<void>(resolve => {
- exec('"C:\\Program Files\\Git\\git-bash.exe" -c "npm run start-release"', err => {
- if (err) {
- identifiedLog(err.message);
- return;
- }
- resolve();
- });
-
- });
- },
- color: green
- });
+ identifiedLog(green("Initiating server restart..."));
+ current_backup = exec('"C:\\Program Files\\Git\\git-bash.exe" -c "npm run start-release"', err => identifiedLog(err?.message || "Previous server process exited."));
writeLocalPidLog("server", `${(current_backup?.pid ?? -2) + 1} created ${timestamp()}`);
} else {
identifiedLog(yellow(`Callback ignored because restarting already initiated ${timestamp()}`));
diff --git a/src/typings/index.d.ts b/src/typings/index.d.ts
index 9e8ace962..674278126 100644
--- a/src/typings/index.d.ts
+++ b/src/typings/index.d.ts
@@ -2,6 +2,7 @@
declare module 'googlephotos';
declare module 'react-image-lightbox-with-rotate';
+declare module 'kill-port';
declare module '@react-pdf/renderer' {
import * as React from 'react';