{"record":{"id":"3bdfcd5e7185aca9","repo":"risingwavelabs/risingwave","slug":"wait-version-not-set","errorCode":null,"errorMessage":"wait version not set","messagePattern":"wait version not set","errorType":"exception","errorClass":"RpcError","httpStatus":null,"severity":"error","filePath":"src/rpc_client/src/meta_client.rs","lineNumber":209,"sourceCode":"    pub async fn create_connection(\n        &self,\n        connection_name: String,\n        database_id: DatabaseId,\n        schema_id: SchemaId,\n        owner_id: UserId,\n        req: create_connection_request::Payload,\n    ) -> Result<WaitVersion> {\n        let request = CreateConnectionRequest {\n            name: connection_name,\n            database_id,\n            schema_id,\n            owner_id,\n            payload: Some(req),\n        };\n        let resp = self.inner.create_connection(request).await?;\n        Ok(resp\n            .version\n            .ok_or_else(|| anyhow!(\"wait version not set\"))?)\n    }\n\n    pub async fn create_secret(\n        &self,\n        secret_name: String,\n        database_id: DatabaseId,\n        schema_id: SchemaId,\n        owner_id: UserId,\n        value: Vec<u8>,\n    ) -> Result<WaitVersion> {\n        let request = CreateSecretRequest {\n            name: secret_name,\n            database_id,\n            schema_id,\n            owner_id,\n            value,\n        };\n        let resp = self.inner.create_secret(request).await?;","sourceCodeStart":191,"sourceCodeEnd":227,"githubUrl":"https://github.com/risingwavelabs/risingwave/blob/6469eb736d691e8e9b8a419a57edd6429ca77417/src/rpc_client/src/meta_client.rs#L191-L227","documentation":"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.","triggerScenarios":"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).","commonSituations":"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.","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"],"exampleFix":null,"handlingStrategy":"retry","validationCode":"// verify meta node version supports WaitVersion in connection responses\n// e.g. check /health or cluster version before issuing DDL","typeGuard":null,"tryCatchPattern":"let resp = client.create_connection(req).await\n    .with_context(|| \"create_connection: empty WaitVersion returned by meta\")?;","preventionTips":["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"],"tags":["grpc","meta","ddl"],"backgroundTag":"unexpected-response-shape","analyzedSha":"6469eb736d691e8e9b8a419a57edd6429ca77417","analyzedAt":"2026-09-11T21:06:21.487Z","contentChangedAt":"2026-09-11T21:06:21.487Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}