fix preview runtime isolation and shutdown (#1088)
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user