fix(orchestrator): only TCP host ports get reachability-probed
wait_for_manifest_host_ports TCP-connect-probed every published port, including UDP/SCTP. netbird's 3478/udp STUN can never answer a TCP connect, so the probe failed forever and drove an endless host-port repair/reconcile loop on .228 (netbird-server restarting ~every 60s). Filter to tcp (empty protocol = tcp). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
44f7af2017
commit
4346007d37
@ -469,7 +469,18 @@ async fn http_host_port_ready(port: u16, path: &str) -> bool {
|
||||
}
|
||||
|
||||
async fn wait_for_manifest_host_ports(manifest: &AppManifest, timeout_secs: u64) -> Result<()> {
|
||||
for port in manifest.app.ports.iter().map(|p| p.host) {
|
||||
// Only TCP host ports are reachability-probed: the probe is a TCP connect,
|
||||
// which a UDP/SCTP listener (e.g. netbird's 3478/udp STUN) can never answer,
|
||||
// so probing it would always "fail" and drive an endless host-port repair
|
||||
// loop (observed on .228 after netbird's manifest deploy). Default protocol
|
||||
// (empty) is tcp.
|
||||
for port in manifest
|
||||
.app
|
||||
.ports
|
||||
.iter()
|
||||
.filter(|p| matches!(p.protocol.to_ascii_lowercase().as_str(), "" | "tcp"))
|
||||
.map(|p| p.host)
|
||||
{
|
||||
let ready = match manifest.app.id.as_str() {
|
||||
"uptime-kuma" => wait_for_http_host_port(port, "/", timeout_secs).await,
|
||||
_ => wait_for_host_port(port, timeout_secs).await,
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user