{"record":{"id":"5a0574cd02c3cbf8","repo":"databendlabs/databend","slug":"no-metasrv-running-on","errorCode":null,"errorMessage":"no metasrv running on: {}","messagePattern":"no metasrv running on: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/meta/control/src/export_from_grpc.rs","lineNumber":63,"sourceCode":"\n/// if port is open, service is running\nasync fn is_service_running(addr: SocketAddr) -> Result<bool, io::Error> {\n    let socket = TcpSocket::new_v4()?;\n    let stream = socket.connect(addr).await;\n\n    Ok(stream.is_ok())\n}\n\n/// try to get available grpc api socket address\nasync fn get_available_socket_addr(endpoint: &str) -> Result<SocketAddr, anyhow::Error> {\n    let addrs_iter = endpoint.to_socket_addrs()?;\n    for addr in addrs_iter {\n        if is_service_running(addr).await? {\n            return Ok(addr);\n        }\n        eprintln!(\"WARN: {} is not available\", addr);\n    }\n    Err(anyhow!(\"no metasrv running on: {}\", endpoint))\n}\n\npub async fn export_from_grpc(\n    addr: &str,\n    save: String,\n    chunk_size: Option<u64>,\n) -> anyhow::Result<()> {\n    let client = MetaGrpcClient::<DatabendRuntime>::try_create_with_features(\n        vec![addr.to_string()],\n        \"root\",\n        \"xxx\",\n        None,\n        None,\n        None,\n        DEFAULT_GRPC_MESSAGE_SIZE,\n    )?;\n\n    let mut grpc_client = client.make_established_client().await?;","sourceCodeStart":45,"sourceCodeEnd":81,"githubUrl":"https://github.com/databendlabs/databend/blob/288d84d76e20a2f8f7173bda9691eb6ece301aa9/src/meta/control/src/export_from_grpc.rs#L45-L81","documentation":"Before exporting data over gRPC, export_from_grpc probes candidate addresses with is_service_running. If none of the provided endpoints have a running metasrv, get_available_socket_addr returns 'no metasrv running on: {endpoint}'.","triggerScenarios":"Running `metactl --export-from-running-node` (or grpc export) where every address in the configured grpc_api_address list fails the service-running check.","commonSituations":"Metasrv cluster is down or restarting; wrong gRPC API address/port passed to metactl; checking the admin address instead of the gRPC address; firewalls blocking the probe.","solutions":["Confirm metasrv is running: curl its /v1/health admin endpoint or check process status","Pass the correct grpc_api_address (not the admin address) to metactl","Check network connectivity and firewall rules between metactl and the meta nodes"],"exampleFix":"// before\nmetactl --grpc-api-address 127.0.0.1:9191 --export-from-running-node  # node not there\n// after\nmetactl --grpc-api-address 127.0.0.1:9191  # ensure config grpc_api_address matches and node is up","handlingStrategy":"validation","validationCode":"nc -z <host> <grpc-port> && echo 'grpc port open' || echo 'no metasrv listening'","typeGuard":null,"tryCatchPattern":"match export_from_running_node(addr).await {\n    Err(e) if e.to_string().contains(\"no metasrv running\") => eprintln!(\"start metasrv or fix --grpc-api-address\"),\n    other => other,\n}","preventionTips":["Always pass grpc_api_address, never the admin api address, for export","Health-check the cluster before export/import workflows","Document correct ports per deployment (9191 default gRPC vs 28102 admin)"],"tags":["network","grpc","metasrv"],"backgroundTag":"connection-refused","analyzedSha":"288d84d76e20a2f8f7173bda9691eb6ece301aa9","analyzedAt":"2026-09-11T11:29:36.208Z","contentChangedAt":"2026-09-11T11:29:36.208Z","schemaVersion":2},"datasetVersion":"2026-09-16T04:17:20.429Z"}