feat: improve manager recovery and expose server pid in dashboard

This commit is contained in:
2026-07-21 20:45:40 +02:00
parent 268734275a
commit 8354d94cbc
6 changed files with 72 additions and 9 deletions
+38 -2
View File
@@ -164,6 +164,40 @@ export class ServerLifecycle {
case "RECOVERING":
if(
Date.now() -
server.lastSeen
>
LIFECYCLE_CRASH_TIMEOUT
){
server.status =
"CRASHED";
this.serverRegistry.update(
server
);
logger.error(
"Server-Recovery fehlgeschlagen:",
server.name
);
}
break;
case "RUNNING":
@@ -318,7 +352,8 @@ export class ServerLifecycle {
server =>
server.status === "RUNNING" ||
server.status === "STARTING"
server.status === "STARTING" ||
server.status === "RECOVERING"
);
@@ -582,7 +617,8 @@ export class ServerLifecycle {
s =>
s.status === "RUNNING" ||
s.status === "STARTING"
s.status === "STARTING" ||
s.status === "RECOVERING"
)
.length;
+8 -3
View File
@@ -16,6 +16,7 @@ export interface ServerInfo {
status:
| "STARTING"
| "RECOVERING"
| "RUNNING"
| "STOPPING"
| "CRASHED";
@@ -90,7 +91,7 @@ export class ServerRegistry {
port: serverData.port,
queryPort: serverData.queryPort,
created: serverData.created,
status: "STARTING",
status: "RECOVERING",
players: 0,
maxPlayers: 0,
lastSeen: Date.now()
@@ -347,7 +348,10 @@ export class ServerRegistry {
}
else if(server.status === "RUNNING"){
else if(
server.status === "RUNNING" ||
server.status === "RECOVERING"
){
server.status =
@@ -424,7 +428,8 @@ export class ServerRegistry {
}
else if(
server.status === "RUNNING"
server.status === "RUNNING" ||
server.status === "RECOVERING"
){
server.status =
+2
View File
@@ -102,6 +102,7 @@ export class WebApi {
name: server.name,
status: server.status,
wrapperId: server.wrapperId,
pid: server.pid,
port: server.port,
queryPort: server.queryPort,
players: server.players,
@@ -124,6 +125,7 @@ export class WebApi {
name: server.name,
status: server.status,
wrapperId: server.wrapperId,
pid: server.pid,
port: server.port,
queryPort: server.queryPort,
players: server.players,
+1
View File
@@ -46,6 +46,7 @@ export interface ServerSummary {
name: string;
status: string;
wrapperId: string;
pid?: number;
port: number;
queryPort: number;
players: number;