Gateway
Gateway kilidi
Neden
- Aynı ana makinede aynı temel bağlantı noktası için yalnızca bir Gateway örneğinin çalışmasını sağlayın; ek Gateway'ler izole profiller ve benzersiz bağlantı noktaları kullanmalıdır.
- Çökme/SIGKILL durumlarından eski kilit dosyaları bırakmadan kurtulun.
- Denetim bağlantı noktası zaten kullanılıyorsa net bir hatayla hızlıca başarısız olun.
Mekanizma
- Gateway önce durum kilidi dizini altında yapılandırma başına bir kilit dosyası edinir ve yapılandırılmış bağlantı noktasında mevcut bir dinleyici olup olmadığını yoklar.
- Kaydedilen kilit sahibi artık yoksa, bağlantı noktası boşsa veya kilit bayatsa, başlatma kilidi geri alır ve devam eder.
- Gateway ardından özel bir TCP dinleyicisi kullanarak HTTP/WebSocket dinleyicisini bağlar (varsayılan
ws://127.0.0.1:18789). - Bağlama
EADDRINUSEile başarısız olursa başlatmaGatewayLockError("another gateway instance is already listening on ws://127.0.0.1:<port>")hatası fırlatır. - Kapatma sırasında Gateway HTTP/WebSocket sunucusunu kapatır ve kilit dosyasını kaldırır.
Hata yüzeyi
- Başka bir süreç bağlantı noktasını tutuyorsa başlatma
GatewayLockError("another gateway instance is already listening on ws://127.0.0.1:<port>")hatası fırlatır. - Diğer bağlama hataları
GatewayLockError("failed to bind gateway socket on ws://127.0.0.1:<port>: …")olarak görünür.
Operasyonel notlar
- Bağlantı noktası başka bir süreç tarafından kullanılıyorsa hata aynıdır; bağlantı noktasını boşa çıkarın veya
openclaw gateway --port <port>ile başka bir tane seçin. - Bir hizmet denetleyicisi altında, mevcut sağlıklı bir
/healthzyanıtlayıcısı gören yeni Gateway süreci denetimi o süreçte bırakır. systemd üzerinde, yinelenen başlatıcı 78 koduyla çıkar; böylece varsayılanRestartPreventExitStatus=78,Restart=alwaysayarının bir kilit veyaEADDRINUSEçakışmasında döngüye girmesini durdurur. Mevcut süreç hiçbir zaman sağlıklı hale gelmezse yeniden denemeler sınırlandırılır ve başlatma sonsuza kadar döngüye girmek yerine net bir kilit hatasıyla başarısız olur. - macOS uygulaması, Gateway'i başlatmadan önce kendi hafif PID korumasını hâlâ sürdürür; çalışma zamanı kilidi, kilit dosyası ve HTTP/WebSocket bağlamasıyla uygulanır.
İlgili
- Birden Fazla Gateway — benzersiz bağlantı noktalarıyla birden fazla örnek çalıştırma
- Sorun Giderme —
EADDRINUSEve bağlantı noktası çakışmalarını tanılama