risingwavelabs/risingwave · error · ConcurrentRequestError
all request confluent registry all timeout, {context} {}
Error message
all request confluent registry all timeout, {context}
{} What it means
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.
Source
Thrown at src/connector/src/schema/schema_registry/client.rs:118
.unwrap_or(DEFAULT_RETRIES_MAX),
},
}
}
}
/// An client for communication with schema registry
#[derive(Debug)]
pub struct Client {
inner: reqwest::Client,
url: Vec<Url>,
username: Option<String>,
password: Option<String>,
retry_config: SchemaRegistryRetryConfig,
}
#[derive(Debug, thiserror::Error)]
#[error("all request confluent registry all timeout, {context}\n{}", errs.iter().map(|e| format!("\t{}", e.as_report())).join("\n"))]
pub struct ConcurrentRequestError {
errs: Vec<itertools::Either<RequestError, tokio::task::JoinError>>,
context: String,
}
type SrResult<T> = Result<T, ConcurrentRequestError>;
#[derive(thiserror::Error, Debug)]
pub enum SchemaRegistryClientError {
#[error(transparent)]
InvalidOption(#[from] InvalidOptionError),
#[error("read ca file error: {0}")]
ReadFile(#[source] std::io::Error),
#[error("parse ca file error: {0}")]
ParsePem(#[source] reqwest::Error),
#[error("build schema registry client error: {0}")]
Build(#[source] reqwest::Error),
}View on GitHub (pinned to 6469eb736d)
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.
Example fix
// before CREATE SOURCE s (...) WITH ( connector = 'kafka', schema.registry = 'http://schema-registry.internal:8081' ); // after CREATE SOURCE s (...) WITH ( connector = 'kafka', schema.registry = 'http://schema-registry:8081' );
Defensive patterns
Strategy: retry
Validate before calling
// pre-flight: ensure registry is reachable
let resp = reqwest::get(format!("{}/subjects", registry_url)).await?;
assert!(resp.status().is_success(), "registry unreachable"); Try / catch
match client.get_schema_by_id(id).await {
Ok(schema) => schema,
Err(e) => {
tracing::error!(error = ?e, "all registry attempts failed; check per-attempt errors");
return Err(e.into());
}
} Prevention
- 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.
When it happens
Trigger: 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).
Common situations: 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).
Understand the failure class
Background: Request timed out: what client-side request timeouts mean across libraries (Request timed out, TIMED_OUT, APITimeoutError) — this error's family across 39 libraries.
- Timeouts: ETIMEDOUT, deadlines, and hung requests — what actually expires when a request times out.
Related errors
- request error
- schema registry client error: {0}
- confluent registry send req error: {0}
- failed to generate AWS MSK IAM token
- [Schema history] putObject timed out after {:?}. You can adj
AI-assisted analysis of risingwavelabs/risingwave@6469eb736d (2026-09-11).
Data as JSON: /api/errors/9ef4e6b03bbc4c01.
Report an issue: GitHub.