Skip to content

Commit acc4bca

Browse files
committed
Hotfix: Fix Windows backend restart loop and Java 25 mapping bug (v1.1.9)
1 parent dc6efc7 commit acc4bca

File tree

4 files changed

+26
-16
lines changed

4 files changed

+26
-16
lines changed

backend/api_server.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1671,9 +1671,9 @@ def perform_full_shutdown():
16711671
threading.Thread(target=perform_full_shutdown, daemon=True).start()
16721672
return {"message": "Shutdown sequence started"}
16731673

1674-
def start_parent_watchdog():
1674+
def start_parent_watchdog(forced_parent_pid=None):
16751675
"""Vigila si el proceso padre (Electron) sigue vivo. Si muere, cerramos todo."""
1676-
parent_pid = os.getppid()
1676+
parent_pid = forced_parent_pid or os.getppid()
16771677
if parent_pid <= 1: # No parent or init
16781678
return
16791679

@@ -1943,6 +1943,11 @@ def get_running_servers():
19431943

19441944
if __name__ == "__main__":
19451945
import uvicorn
1946+
import argparse
1947+
parser = argparse.ArgumentParser()
1948+
parser.add_argument("--parent-pid", type=int)
1949+
args, _ = parser.parse_known_args()
1950+
19461951
# Iniciar el watchdog antes de arrancar el servidor
1947-
start_parent_watchdog()
1952+
start_parent_watchdog(args.parent_pid)
19481953
uvicorn.run(app, host="127.0.0.1", port=8000)

backend/utils/java_manager.py

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -110,28 +110,28 @@ def get_required_java_version(self, minecraft_version: str) -> int:
110110

111111
if major_version == 1:
112112
if minor_version >= 22:
113-
return 25 # 1.22+ requiere Java 25
113+
return 21 # Default to 21 for unknown future versions (e.g. 1.22+)
114114
elif minor_version == 21 and patch_version >= 4:
115-
return 25 # 1.21.4+ requiere Java 25
115+
return 21 # 1.21.4+ works well with 21
116116
elif minor_version >= 21:
117-
return 21 # 1.21 - 1.21.3 requiere Java 21
117+
return 21
118118
elif minor_version >= 17:
119-
return 17 # 1.17 - 1.20.6 requiere Java 17
119+
return 17
120120
except Exception as e:
121-
logger.warning(f"Error parsing version {minecraft_version}: {e}")
121+
logger.warning(f"Error parsing version {version}: {e}")
122122

123123
# Si no ha coincidido por lógica numérica, buscar por 'mayor.menor'
124124
major_minor = f"{parts[0]}.{parts[1]}"
125125
if major_minor in self.mc_java_requirements:
126126
return self.mc_java_requirements[major_minor]
127127

128-
# Para versiones no mapeadas y muy nuevas, asumir Java 25
129-
logger.warning(f"Unknown Minecraft version {minecraft_version}, defaulting to Java 25")
130-
return 25
128+
# Para versiones no mapeadas y muy nuevas, asumir Java 21
129+
logger.warning(f"Unknown Minecraft version {version}, defaulting to Java 21")
130+
return 21
131131

132-
# Fallback para versiones desconocidas
133-
logger.warning(f"Unknown Minecraft version {minecraft_version}, defaulting to Java 25")
134-
return 25
132+
# Fallback para versiones totalmente desconocidas
133+
logger.warning(f"Unknown Minecraft version {version}, defaulting to Java 21")
134+
return 21
135135

136136
def detect_system_java(self, java_path: str = "java") -> Optional[Tuple[int, str]]:
137137
"""

changelog.txt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,11 @@
1212
- **RAM warning system** — Visual warnings when assigning >50% or >75% of system RAM
1313
- **System info endpoint** — New `/system/info` API returns total RAM for frontend validation
1414

15+
### ⚡ HOTFIX 1.1.9.1 (Included in v1.1.9):
16+
- **Fixed backend restart loop on Windows** — Watchdog now correctly monitors the Electron process using a passed PID, preventing premature restarts during installations.
17+
- **Improved Java version mapping** — Version detection now defaults to Java 21/17 for unknown future versions instead of Java 25.
18+
- **Robust Forge version handling** — Versions like "26.1.1" no longer trigger incorrect Java 25 snapshot logic.
19+
1520
### 🔧 IMPROVEMENTS:
1621
- **Smart close behavior** — App checks for running servers before deciding to hide or quit
1722
- **Tray icon fixes for Linux** — Uses PNG instead of ICO, graceful fallback if tray not supported (Wayland)

electron-app/electron/main.cjs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -130,14 +130,14 @@ function startPythonBackend() {
130130

131131
if (useBinary) {
132132
console.log(`Starting Bundled Backend: ${binaryPath}`);
133-
pythonProcess = spawn(binaryPath, [], {
133+
pythonProcess = spawn(binaryPath, ['--parent-pid', process.pid.toString()], {
134134
cwd: path.dirname(binaryPath),
135135
stdio: ['ignore', 'pipe', 'pipe'],
136136
detached: false
137137
});
138138
} else {
139139
console.log(`Starting Python Script: ${scriptPath}`);
140-
pythonProcess = spawn(pythonCmd, [scriptPath], {
140+
pythonProcess = spawn(pythonCmd, [scriptPath, '--parent-pid', process.pid.toString()], {
141141
cwd: path.dirname(scriptPath),
142142
stdio: ['ignore', 'pipe', 'pipe'],
143143
detached: false

0 commit comments

Comments
 (0)