quickwit-oss/quickwit · error
Kinesis region or endpoint cannot be updated
Error message
Kinesis region or endpoint cannot be updated
What it means
Alongside the stream name, a Kinesis source's `region_or_endpoint` is also immutable across updates: checkpoints keyed by shard IDs assume a single stream, and changing the region/endpoint would silently point at a different stream with colliding shard IDs. `KinesisSourceParams::validate_update` rejects any update that changes this field.
Source
Thrown at quickwit/quickwit-config/src/source_config/mod.rs:506
pub struct KinesisSourceParams {
pub stream_name: String,
#[serde(flatten)]
pub region_or_endpoint: Option<RegionOrEndpoint>,
/// When backfill mode is enabled, the source exits after reaching the end of the stream.
#[serde(skip_serializing_if = "is_false")]
pub enable_backfill_mode: bool,
}
impl KinesisSourceParams {
fn validate_update(&self, other: &Self) -> anyhow::Result<()> {
// Changing the stream would likely mess up the checkpoints because the
// Kinesis shard IDs are used as metastore checkpoint PartitionId, and
// there uniqueness is only guaranteed within a stream.
ensure!(
self.stream_name == other.stream_name,
"Kinesis stream_name cannot be updated"
);
ensure!(
self.region_or_endpoint == other.region_or_endpoint,
"Kinesis region or endpoint cannot be updated"
);
Ok(())
}
}
#[derive(Clone, Debug, Eq, PartialEq, Deserialize)]
#[serde(deny_unknown_fields)]
struct KinesisSourceParamsInner {
pub stream_name: String,
pub region: Option<String>,
pub endpoint: Option<String>,
#[serde(default)]
pub enable_backfill_mode: bool,
}
impl TryFrom<KinesisSourceParamsInner> for KinesisSourceParams {View on GitHub (pinned to a39730c5cd)
Solutions
- Delete the existing Kinesis source and create a new one with the new region_or_endpoint.
- Keep `region_or_endpoint` identical to the stored value and change only mutable params.
- If the region changed only in formatting, submit the value exactly as originally configured (same string) to pass the equality check.
Example fix
// before: update with region_or_endpoint: us-east-2 (stored: us-east-1) -> rejected // after: recreate source quickwit source delete --index my-index --source kinesis-src quickwit source create --index my-index --source-config kinesis-use2.json
Defensive patterns
Strategy: validation
Validate before calling
let current = client.get_source(index_id, source_id).await?;
if current.params.region_or_endpoint != new_params.region_or_endpoint {
return Err("Kinesis region_or_endpoint is immutable; recreate the source".into());
}
client.update_source(index_id, source_id, new_params).await?; Try / catch
match client.update_source(index_id, source_id, params).await {
Err(e) if e.to_string().contains("region or endpoint cannot be updated") => {
client.delete_source(index_id, source_id).await?;
client.create_source(index_id, source_config_new_region).await?;
}
other => other?,
} Prevention
- Use the exact same region string format everywhere (avoid mixed 'us-east-1' vs ARN/endpoint forms).
- Plan region migrations as new-source creation with checkpoint review.
- Compare the full params object against the stored source before issuing updates.
When it happens
Trigger: Updating a Kinesis source config where `region_or_endpoint` differs from the stored value (e.g. changing region string or custom endpoint URL), failing validate_update.
Common situations: Moving the cluster or index to another AWS region and trying to retarget the source; switching between a localstack/custom endpoint and real AWS; region string format normalized differently between config and stored value.
Understand the failure class
Background: UnsupportedOperationException and "is not supported" errors: when a library deliberately refuses a call — this error's family across 30 libraries.
Related errors
- Kinesis stream_name cannot be updated
- Kafka topic cannot be updated
- existing `source_id` {} does not match updated `source_id` {
- failed to parse host: `{host}`
- failed to parse address `{}`: hostname is invalid
AI-assisted analysis of quickwit-oss/quickwit@a39730c5cd (2026-09-08).
Data as JSON: /api/errors/0d7d64e2a0b337a4.
Report an issue: GitHub.