Verrou de la Gateway¶
DerniÚre mise à jour : 2025-12-11
Pourquoi¶
- Garantir quâune seule instance de la Gateway (passerelle) sâexĂ©cute par port de base sur le mĂȘme hĂŽte ; des Gateways supplĂ©mentaires doivent utiliser des profils isolĂ©s et des ports uniques.
- Survivre aux crashs/SIGKILL sans laisser de fichiers de verrou obsolĂštes.
- Ăchouer rapidement avec une erreur explicite lorsque le port de contrĂŽle est dĂ©jĂ occupĂ©.
Mécanisme¶
- La Gateway (passerelle) lie lâĂ©couteur WebSocket (par dĂ©faut
ws://127.0.0.1:18789) immĂ©diatement au dĂ©marrage Ă lâaide dâun Ă©couteur TCP exclusif. - Si la liaison Ă©choue avec
EADDRINUSE, le dĂ©marrage lĂšveGatewayLockError("another gateway instance is already listening on ws://127.0.0.1:<port>"). - Le systĂšme dâexploitation libĂšre automatiquement lâĂ©couteur Ă toute fin de processus, y compris en cas de crash et de SIGKILL â aucun fichier de verrou distinct ni Ă©tape de nettoyage nâest nĂ©cessaire.
- Ă lâarrĂȘt, la Gateway (passerelle) ferme le serveur WebSocket et le serveur HTTP sous-jacent afin de libĂ©rer rapidement le port.
Surface dâerreur¶
- Si un autre processus détient le port, le démarrage lÚve
GatewayLockError("another gateway instance is already listening on ws://127.0.0.1:<port>"). - Les autres échecs de liaison remontent sous
GatewayLockError("failed to bind gateway socket on ws://127.0.0.1:<port>: âŠ").
Notes opérationnelles¶
- Si le port est occupĂ© par un autre processus, lâerreur est identique ; libĂ©rez le port ou choisissez-en un autre avec
openclaw gateway --port <port>. - Lâapplication macOS maintient toujours sa propre garde PID lĂ©gĂšre avant de lancer la Gateway (passerelle) ; le verrouillage Ă lâexĂ©cution est appliquĂ© par la liaison WebSocket.