fix preview runtime isolation and shutdown (#1088)

This commit is contained in:
ekko
2026-05-28 13:50:52 +08:00
committed by GitHub
parent 1734bac9b4
commit d610c3d1b9
17 changed files with 256 additions and 19 deletions
@@ -2413,8 +2413,9 @@ class WorkerProcess:
return _send_bridge_request(self.endpoint, req, request_timeout)
def _worker_endpoint(key: str) -> str:
safe = hashlib.sha256(key.encode("utf-8")).hexdigest()[:16]
def _worker_endpoint(key: str, namespace: str | None = None) -> str:
namespace_key = f"{namespace or ''}\0{key}"
safe = hashlib.sha256(namespace_key.encode("utf-8")).hexdigest()[:16]
if os.name == "nt":
port_base = int(os.environ.get("HERMES_AGENT_BRIDGE_WORKER_PORT_BASE", "18780"))
return f"tcp://127.0.0.1:{port_base + int(safe[:4], 16) % 1000}"
@@ -2637,7 +2638,7 @@ class BridgeBroker:
with self._lock:
worker = self._workers.get(key)
if worker is None:
worker = WorkerProcess(key, profile, _worker_endpoint(key), self.agent_root, self.hermes_home)
worker = WorkerProcess(key, profile, _worker_endpoint(key, self.endpoint), self.agent_root, self.hermes_home)
self._workers[key] = worker
return worker
+8
View File
@@ -1,5 +1,6 @@
import { logger } from './logger'
import { closeDb } from '../db'
import { stopPreviewRuntime } from '../controllers/update'
export function bindShutdown(server: any, groupChatServer?: any, chatRunServer?: any, agentBridgeManager?: any): void {
let isShuttingDown = false
@@ -15,6 +16,13 @@ export function bindShutdown(server: any, groupChatServer?: any, chatRunServer?:
console.log(`[shutdown] Received signal: ${signal}`)
try {
try {
await stopPreviewRuntime()
logger.info('Preview runtime stopped')
} catch (err) {
logger.warn(err, 'Failed to stop preview runtime (non-fatal)')
}
if (agentBridgeManager) {
try {
await agentBridgeManager.stop()