risingwavelabs/risingwave · error · RpcError
wait version not set
Error message
wait version not set
What it means
create_connection expects the meta node to return a WaitVersion in resp.version, which the frontend awaits to know when the DDL change is visible. If the response omits version (None), this error is raised. It indicates the meta service returned a response that violates the expected contract.
Solutions
- Upgrade the meta node to match the client's expected response contract
- Check meta node logs for the create_connection failure that left version unset
- Handle resp.status on the meta side so failures return an error instead of an empty version
- Retry the operation after confirming meta node health
Defensive patterns
Strategy: retry
Validate before calling
// verify meta node version supports WaitVersion in connection responses // e.g. check /health or cluster version before issuing DDL
Try / catch
let resp = client.create_connection(req).await
.with_context(|| "create_connection: empty WaitVersion returned by meta")?; Prevention
- Keep meta node and frontend on compatible versions
- Check meta node logs when DDL responses lack WaitVersion
- Prefer surfacing resp.status errors on the meta side
- Retry DDL after confirming meta node health
When it happens
Trigger: Calling MetaClient::create_connection when the meta node returns a CreateConnectionResponse with no version field set (older meta node, or meta-side failure silently swallowed — see the TODO about resp.status).
Common situations: Version skew between client and meta node where the old meta does not populate version; meta node hitting an internal error path that skips setting version.
Related errors
- named already exists
- Dropping sink into table is not allowed for unmigrated table
- failed to wait streaming job finish
- Unsupported object type for AlterConnectorProps
- id not found
AI-assisted analysis of risingwavelabs/risingwave@6469eb736d (2026-09-11).
Data as JSON: /api/errors/3bdfcd5e7185aca9.
Report an issue: GitHub.
Appendix: source
Thrown at src/rpc_client/src/meta_client.rs:209
pub async fn create_connection(
&self,
connection_name: String,
database_id: DatabaseId,
schema_id: SchemaId,
owner_id: UserId,
req: create_connection_request::Payload,
) -> Result<WaitVersion> {
let request = CreateConnectionRequest {
name: connection_name,
database_id,
schema_id,
owner_id,
payload: Some(req),
};
let resp = self.inner.create_connection(request).await?;
Ok(resp
.version
.ok_or_else(|| anyhow!("wait version not set"))?)
}
pub async fn create_secret(
&self,
secret_name: String,
database_id: DatabaseId,
schema_id: SchemaId,
owner_id: UserId,
value: Vec<u8>,
) -> Result<WaitVersion> {
let request = CreateSecretRequest {
name: secret_name,
database_id,
schema_id,
owner_id,
value,
};
let resp = self.inner.create_secret(request).await?;View on GitHub (pinned to 6469eb736d)