{"record":{"id":"b4b15492c48fb9a5","repo":"risingwavelabs/risingwave","slug":"value-out-of-range-expect-b4b154","errorCode":null,"errorMessage":"value {:?} out of range, expect {:?}","messagePattern":"value (.+?) out of range, expect (.+?)","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/meta/src/controller/catalog/create_op.rs","lineNumber":93,"sourceCode":"            owner_id: Set(owner_id),\n            schema_id: Set(schema_id),\n            database_id: Set(database_id),\n            belong_to_oid: Set(belong_to_oid),\n            initialized_at: Default::default(),\n            created_at: Default::default(),\n            initialized_at_cluster_version: Set(Some(current_cluster_version())),\n            created_at_cluster_version: Set(Some(current_cluster_version())),\n        };\n        Ok(active_db.insert(txn).await?)\n    }\n\n    pub async fn create_database(\n        &self,\n        db: PbDatabase,\n    ) -> MetaResult<(NotificationVersion, risingwave_meta_model::database::Model)> {\n        // validate first\n        if let Some(ref interval) = db.barrier_interval_ms {\n            OverrideValidate::barrier_interval_ms(interval).map_err(|e| anyhow::anyhow!(e))?;\n        }\n        if let Some(ref frequency) = db.checkpoint_frequency {\n            OverrideValidate::checkpoint_frequency(frequency).map_err(|e| anyhow::anyhow!(e))?;\n        }\n\n        let inner = self.inner.write().await;\n        let owner_id = db.owner as _;\n        let txn = inner.db.begin().await?;\n        ensure_user_id(owner_id, &txn).await?;\n        check_database_name_duplicate(&db.name, &txn).await?;\n\n        let db_obj = Self::create_object(&txn, ObjectType::Database, owner_id, None).await?;\n        let mut db: database::ActiveModel = db.into();\n        db.database_id = Set(db_obj.oid.as_database_id());\n        let db = db.insert(&txn).await?;\n\n        let mut schemas = vec![];\n        for schema_name in iter::once(DEFAULT_SCHEMA_NAME).chain(SYSTEM_SCHEMAS) {","sourceCodeStart":75,"sourceCodeEnd":111,"githubUrl":"https://github.com/risingwavelabs/risingwave/blob/6469eb736d691e8e9b8a419a57edd6429ca77417/src/meta/src/controller/catalog/create_op.rs#L75-L111","documentation":"create_database validates db.barrier_interval_ms via OverrideValidate::barrier_interval_ms before inserting the catalog row. The check (expect_range, src/common/src/system_param/mod.rs:281) rejects values outside the allowed range for the barrier interval, returning this error string wrapped in anyhow. This prevents creating a database whose parameter cannot be represented (i32) or is semantically invalid.","triggerScenarios":"Calling CREATE DATABASE ... WITH ( barrier_interval_ms = <out-of-range> ) or the create_database catalog API with a PbDatabase whose barrier_interval_ms field is outside the accepted range.","commonSituations":"Provisioning databases from IaC/scripts with wrong-unit values (seconds vs milliseconds); very large ms values exceeding i32; copy-pasted tenant configs with invalid values.","solutions":["Retry CREATE DATABASE with a barrier_interval_ms inside the accepted range.","Verify the unit is milliseconds and the value fits i32.","Drop the barrier_interval_ms field to use the cluster default."],"exampleFix":"// before\ndb.barrier_interval_ms = Some(10_000_000_000); // out of range\n// after\ndb.barrier_interval_ms = Some(250);","handlingStrategy":"validation","validationCode":"// validate before CREATE DATABASE\nfn check_db_params(barrier_interval_ms: Option<u64>) -> Result<(), String> {\n    if let Some(v) = barrier_interval_ms {\n        if v == 0 || v > i32::MAX as u64 { return Err(format!(\"barrier_interval_ms {} out of range\", v)); }\n    }\n    Ok(())\n}","typeGuard":"fn fits_i32(v: u64) -> Option<i32> { i32::try_from(v).ok() }","tryCatchPattern":"match controller.create_database(db).await {\n    Err(e) if e.to_string().contains(\"out of range\") => return Err(UserInputError(e.to_string())),\n    other => other,\n}","preventionTips":["Validate units (ms) and magnitude in IaC templates before CREATE DATABASE.","Reuse the same OverrideValidate helpers client-side when available.","Centralize database parameter defaults instead of hardcoding per environment."],"tags":["meta","system-parameter","validation","create-database"],"backgroundTag":"value-out-of-range","analyzedSha":"6469eb736d691e8e9b8a419a57edd6429ca77417","analyzedAt":"2026-09-11T21:06:21.487Z","contentChangedAt":"2026-09-11T21:06:21.487Z","schemaVersion":2},"datasetVersion":"2026-09-14T16:17:12.679Z"}