risingwavelabs/risingwave · error · Error
request error
Error message
request error
What it means
Error::Request wraps a reqwest::Error raised while performing the HTTP request to fetch the schema from {url}. The generic message "request error" covers connection failures, DNS errors, timeouts, and TLS problems; inspect the source for details.
Source
Thrown at src/connector/codec/src/decoder/json/mod.rs:63
use url::Url;
use super::avro::{MapHandling, avro_schema_to_fields};
#[derive(Debug, Error, thiserror_ext::ContextInto)]
pub enum Error {
#[error("could not open schema from {filename}")]
SchemaFromFile {
filename: String,
source: std::io::Error,
},
#[error("parse error for url {url}")]
UrlParse {
url: String,
source: url::ParseError,
},
#[error("schema from {url} not valid JSON")]
SchemaNotJson { url: String, source: std::io::Error },
#[error("request error")]
Request { url: String, source: reqwest::Error },
#[error("schema from {url} not valid JSON")]
SchemaNotJsonSerde {
url: String,
source: serde_json::Error,
},
#[error(
"ref `{ref_string}` cannot be resolved as a pointer, and `{ref_fragment}` cannot be found in the schema"
)]
JsonRefPointerNotFound {
ref_string: String,
ref_fragment: String,
},
#[error("json ref error")]
JsonRef {
#[from]
source: std::io::Error,
},View on GitHub (pinned to 6469eb736d)
Solutions
- Verify the registry host/port is reachable from the RisingWave node (use the container-network hostname, not localhost, when applicable).
- Check the schema registry service is running and healthy.
- Fix DNS/firewall/proxy configuration for egress to the registry.
- If using https, ensure the CA cert is trusted by the process.
Example fix
// before schema.location = 'http://localhost:8081/subjects/events-value/versions/1/schema' // RW runs in a container // after schema.location = 'http://schema-registry:8081/subjects/events-value/versions/1/schema'
Defensive patterns
Strategy: retry
Validate before calling
await fetch(schemaUrl).catch(e => { throw new Error(`schema registry unreachable: ${e.cause ?? e}`); }); Try / catch
match result {
Err(Error::Request { url, source }) => {
log::warn!("transport error fetching schema from {url}: {source}");
// check connectivity/DNS/TLS, then retry with backoff
}
other => other?,
} Prevention
- Use service-discovery hostnames valid inside the cluster network, not localhost.
- Monitor registry availability and add readiness checks before starting sources.
- Pin TLS/CA configuration and test it in the target environment.
When it happens
Trigger: The JSON schema loader sends an HTTP GET to the schema URL and reqwest fails at the transport level: host unreachable, connection refused, DNS failure, TLS handshake failure, or timeout.
Common situations: Schema registry hostname not resolvable from the RisingWave container (using localhost inside a container); registry service down; network policies blocking egress; TLS cert mismatch.
Understand the failure class
Background: 'Something went wrong' / 'Request failed (500)' / 'HTTP error! status: 404' — what failed HTTP requests actually mean and how to find the real cause — this error's family across 28 libraries.
Related errors
- schema registry client error: {0}
- confluent registry send req error: {0}
- Vault API returned error status: {} - {}
- Malformed response: {message}
- all request confluent registry all timeout, {context} {}
AI-assisted analysis of risingwavelabs/risingwave@6469eb736d (2026-09-11).
Data as JSON: /api/errors/fc64435ae04b04e3.
Report an issue: GitHub.