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<()> {
|
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() {
|
let ready = match manifest.app.id.as_str() {
|
||||||
"uptime-kuma" => wait_for_http_host_port(port, "/", timeout_secs).await,
|
"uptime-kuma" => wait_for_http_host_port(port, "/", timeout_secs).await,
|
||||||
_ => wait_for_host_port(port, timeout_secs).await,
|
_ => wait_for_host_port(port, timeout_secs).await,
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user