{"record":{"id":"9ef4e6b03bbc4c01","repo":"risingwavelabs/risingwave","slug":"all-request-confluent-registry-all-timeout-conte","errorCode":null,"errorMessage":"all request confluent registry all timeout, {context}\n{}","messagePattern":"all request confluent registry all timeout, (.+?)\n(.+?)","errorType":"exception","errorClass":"ConcurrentRequestError","httpStatus":null,"severity":"error","filePath":"src/connector/src/schema/schema_registry/client.rs","lineNumber":118,"sourceCode":"                    .unwrap_or(DEFAULT_RETRIES_MAX),\n            },\n        }\n    }\n}\n\n/// An client for communication with schema registry\n#[derive(Debug)]\npub struct Client {\n    inner: reqwest::Client,\n    url: Vec<Url>,\n    username: Option<String>,\n    password: Option<String>,\n\n    retry_config: SchemaRegistryRetryConfig,\n}\n\n#[derive(Debug, thiserror::Error)]\n#[error(\"all request confluent registry all timeout, {context}\\n{}\", errs.iter().map(|e| format!(\"\\t{}\", e.as_report())).join(\"\\n\"))]\npub struct ConcurrentRequestError {\n    errs: Vec<itertools::Either<RequestError, tokio::task::JoinError>>,\n    context: String,\n}\n\ntype SrResult<T> = Result<T, ConcurrentRequestError>;\n\n#[derive(thiserror::Error, Debug)]\npub enum SchemaRegistryClientError {\n    #[error(transparent)]\n    InvalidOption(#[from] InvalidOptionError),\n    #[error(\"read ca file error: {0}\")]\n    ReadFile(#[source] std::io::Error),\n    #[error(\"parse ca file error: {0}\")]\n    ParsePem(#[source] reqwest::Error),\n    #[error(\"build schema registry client error: {0}\")]\n    Build(#[source] reqwest::Error),\n}","sourceCodeStart":100,"sourceCodeEnd":136,"githubUrl":"https://github.com/risingwavelabs/risingwave/blob/6469eb736d691e8e9b8a419a57edd6429ca77417/src/connector/src/schema/schema_registry/client.rs#L100-L136","documentation":"ConcurrentRequestError is thrown by the Confluent Schema Registry client when every concurrent attempt to reach the registry fails (all futures in the fan-out return either a RequestError or a tokio JoinError). The message embeds the request context and the per-attempt error reports so the developer can see why each request failed. It effectively means the client could not get a successful response from any registry replica.","triggerScenarios":"Calling any client method (e.g. fetching a schema by ID or registering a schema) that fans out requests via Client, when every spawned reqwest task fails — network unreachable, DNS failure, TLS errors, or all tasks panicking (JoinError).","commonSituations":"Schema registry hostname wrong or unresolvable, registry service down, firewall/security-group blocking the port, TLS certificate issues, or container networking (e.g. docker-compose service name not reachable from the RisingWave process).","solutions":["Check connectivity from the RisingWave host: curl the registry URL (e.g. curl http://registry:8081/subjects).","Verify the registry connection options (host/port, auth) in the CREATE SOURCE/TABLE WITH clause.","Inspect the per-attempt errors printed after the context line — they show the root cause (DNS, TLS, timeout).","If using retries, increase SchemaRegistryRetryConfig limits; if infra-related, fix networking or restart the registry service."],"exampleFix":"// before\nCREATE SOURCE s (...) WITH (\n  connector = 'kafka',\n  schema.registry = 'http://schema-registry.internal:8081'\n);\n// after\nCREATE SOURCE s (...) WITH (\n  connector = 'kafka',\n  schema.registry = 'http://schema-registry:8081'\n);","handlingStrategy":"retry","validationCode":"// pre-flight: ensure registry is reachable\nlet resp = reqwest::get(format!(\"{}/subjects\", registry_url)).await?;\nassert!(resp.status().is_success(), \"registry unreachable\");","typeGuard":null,"tryCatchPattern":"match client.get_schema_by_id(id).await {\n    Ok(schema) => schema,\n    Err(e) => {\n        tracing::error!(error = ?e, \"all registry attempts failed; check per-attempt errors\");\n        return Err(e.into());\n    }\n}","preventionTips":["Pre-flight check registry connectivity before creating sources.","Ensure DNS names are resolvable from all RisingWave nodes.","Configure sane retry limits in SchemaRegistryRetryConfig.","Monitor registry service health/alert on downtime."],"tags":["network","schema-registry","timeout"],"backgroundTag":"request-timeout","analyzedSha":"6469eb736d691e8e9b8a419a57edd6429ca77417","analyzedAt":"2026-09-11T21:06:21.487Z","contentChangedAt":"2026-09-11T21:06:21.487Z","schemaVersion":2},"datasetVersion":"2026-09-14T16:17:12.679Z"}