{"record":{"id":"0a3408d864a7ef6a","repo":"risingwavelabs/risingwave","slug":"warehouse-path-must-be-set-in-glue-catalog","errorCode":null,"errorMessage":"`warehouse.path` must be set in glue catalog","messagePattern":"`warehouse\\.path` must be set in glue catalog","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/connector/src/connector_common/iceberg/mod.rs","lineNumber":751,"sourceCode":"        }\n        if let Some(access_key) = &self.s3_access_key {\n            iceberg_configs.insert(S3_ACCESS_KEY_ID.to_owned(), access_key.clone());\n        }\n        if let Some(secret_key) = &self.s3_secret_key {\n            iceberg_configs.insert(S3_SECRET_ACCESS_KEY.to_owned(), secret_key.clone());\n        }\n        if let Some(role_arn) = &self.s3_iam_role_arn {\n            iceberg_configs.insert(S3_ASSUME_ROLE_ARN.to_owned(), role_arn.clone());\n        }\n        iceberg_configs.insert(\n            S3_PATH_STYLE_ACCESS.to_owned(),\n            self.effective_s3_path_style_access().to_string(),\n        );\n        iceberg_configs.insert(\n            iceberg_catalog_glue::GLUE_CATALOG_PROP_WAREHOUSE.to_owned(),\n            self.warehouse_path\n                .clone()\n                .ok_or_else(|| anyhow!(\"`warehouse.path` must be set in glue catalog\"))?,\n        );\n        if let Some(uri) = self.catalog_uri.as_deref() {\n            iceberg_configs.insert(\n                iceberg_catalog_glue::GLUE_CATALOG_PROP_URI.to_owned(),\n                uri.to_owned(),\n            );\n        }\n\n        Ok(CatalogBuildPlan::NativeGlue(iceberg_configs))\n    }\n\n    /// For both V1 and V2.\n    fn build_jni_catalog_configs(\n        &self,\n        catalog_impl: JniCatalogImpl,\n        java_catalog_props: &HashMap<String, String>,\n    ) -> ConnectorResult<(HashMap<String, String>, HashMap<String, String>)> {\n        let mut iceberg_configs = HashMap::new();","sourceCodeStart":733,"sourceCodeEnd":769,"githubUrl":"https://github.com/risingwavelabs/risingwave/blob/6469eb736d691e8e9b8a419a57edd6429ca77417/src/connector/src/connector_common/iceberg/mod.rs#L733-L769","documentation":"Configuration validation error raised while building AWS Glue catalog config for an Iceberg sink/source: the glue catalog requires a `warehouse.path` property (the S3 warehouse location where Iceberg tables are stored) and it was absent from the user's with-clause options. Without it the catalog cannot resolve table locations.","triggerScenarios":"Creating an Iceberg sink/source with `catalog.type = 'glue'` without a `warehouse.path` with-option.","commonSituations":"Assuming Glue infers the warehouse (iceberg-java may not require it); config copied from a Hive-catalog setup; omitted during migration to Glue.","solutions":["Add `warehouse.path` (e.g. 's3://bucket/warehouse') to the with-options.","Ensure it matches the S3 bucket/region configured for Glue databases.","Verify other Glue props (s3.region, credentials) are set alongside it."],"exampleFix":"// before\nwith ( connector='iceberg', catalog.type='glue', s3.region='us-east-1' )\n// after\nwith (\n  connector='iceberg', catalog.type='glue',\n  s3.region='us-east-1',\n  warehouse.path='s3://my-bucket/warehouse'\n)","handlingStrategy":"validation","validationCode":"if (catalogType === 'glue' && !opts['warehouse.path']) {\n  throw new Error(\"`warehouse.path` must be set in glue catalog\");\n}","typeGuard":null,"tryCatchPattern":"catch (e) { if (String(e).includes('glue catalog')) { /* ask for warehouse.path and resubmit */ } else { throw e; } }","preventionTips":["Always pair catalog.type='glue' with warehouse.path, s3.region, and credentials.","Keep a per-catalog required-options template for DDL generation.","Document warehouse location alongside Glue database setup."],"tags":["iceberg","glue","missing-config"],"backgroundTag":"missing-required-config-field","analyzedSha":"6469eb736d691e8e9b8a419a57edd6429ca77417","analyzedAt":"2026-09-11T21:06:21.487Z","contentChangedAt":"2026-09-11T21:06:21.487Z","schemaVersion":2},"datasetVersion":"2026-09-14T21:17:11.552Z"}