{"record":{"id":"db048ad2759611a8","repo":"quickwit-oss/quickwit","slug":"listen-address-listen-ip-is-unspecified-and-ad","errorCode":null,"errorMessage":"listen address `{listen_ip}` is unspecified and advertise address is not set","messagePattern":"listen address `(.+?)` is unspecified and advertise address is not set","errorType":"validation","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"quickwit/quickwit-config/src/node_config/serialize.rs","lineNumber":122,"sourceCode":"    ConfigValue::with_default(Host::default().to_string())\n}\n\nfn default_rest_listen_port() -> u16 {\n    7280\n}\n\nfn default_data_dir_uri() -> ConfigValue<Uri, QW_DATA_DIR> {\n    ConfigValue::with_default(Uri::from_str(DEFAULT_DATA_DIR_PATH).unwrap())\n}\n\n/// Returns the default advertise host.\nfn default_advertise_host(listen_ip: &IpAddr) -> anyhow::Result<Host> {\n    if listen_ip.is_unspecified() {\n        if let Some((interface_name, private_ip)) = find_private_ip() {\n            info!(advertise_address=%private_ip, interface_name=%interface_name, \"using sniffed advertise address `{private_ip}`\");\n            return Ok(Host::from(private_ip));\n        }\n        bail!(\"listen address `{listen_ip}` is unspecified and advertise address is not set\");\n    }\n    info!(advertise_address=%listen_ip, \"using listen address `{listen_ip}` as advertise address\");\n    Ok(Host::from(*listen_ip))\n}\n\n// Surprisingly, the default metastore and the index root uri are the same (if you exclude the\n// polling_interval parameter). Indeed, this is a convenient setting for testing with a file backed\n// metastore and indexes splits stored locally too.\n// For a given index `index-id`, it means that we have the metastore file\n// in  `./qwdata/indexes/{index-id}/metastore.json` and splits in\n// dir `./qwdata/indexes/{index-id}/splits`.\nfn default_metastore_uri(data_dir_uri: &Uri) -> Uri {\n    data_dir_uri.join(\"indexes#polling_interval=30s\").expect(\"Failed to create default metastore URI. This should never happen! Please, report on https://github.com/quickwit-oss/quickwit/issues.\")\n}\n\nfn default_metastore_read_replica_uri() -> ConfigValue<Uri, QW_METASTORE_READ_REPLICA_URI> {\n    ConfigValue::none()\n}","sourceCodeStart":104,"sourceCodeEnd":140,"githubUrl":"https://github.com/quickwit-oss/quickwit/blob/a39730c5cdcd1a4fe798403737ae293999ea21f8/quickwit/quickwit-config/src/node_config/serialize.rs#L104-L140","documentation":"While computing the default advertise host, the configured listen address is unspecified (0.0.0.0 or ::), meaning it binds to all interfaces and carries no routable identity. Quickwit tried to sniff a private IP via `find_private_ip` to use as advertise address and failed (no suitable interface found), so no address can be advertised to cluster peers.","triggerScenarios":"Thrown at quickwit/quickwit-config/src/node_config/serialize.rs:122 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Set an explicit advertise address in the config (e.g. `advertise_address: 10.0.0.5`)","Bind to a specific, non-wildcard listen address instead of 0.0.0.0","Ensure the node has a network interface with a private IP that can be sniffed"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"a39730c5cdcd1a4fe798403737ae293999ea21f8","analyzedAt":"2026-09-08T13:19:37.784Z","contentChangedAt":"2026-09-08T13:19:37.784Z","schemaVersion":2},"datasetVersion":"2026-09-17T15:17:12.973Z"}