{"record":{"id":"68ec492b01b7ebce","repo":"apache/iceberg","slug":"catalog-creation-for-inputname-and-options-f","errorCode":null,"errorMessage":"Catalog creation for inputName={} and options {} failed, because parameter 'warehouse' is not set, Nessie can't store data.","messagePattern":"Catalog creation for inputName=(.+?) and options (.+?) failed, because parameter 'warehouse' is not set, Nessie can't store data\\.","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"nessie/src/main/java/org/apache/iceberg/nessie/NessieCatalog.java","lineNumber":205,"sourceCode":"      // Explicitly log a warning, otherwise the thrown exception can get list in the \"silent-ish\n      // catch\"\n      // in o.a.i.spark.Spark3Util.catalogAndIdentifier(o.a.s.sql.SparkSession, List<String>,\n      //     o.a.s.sql.connector.catalog.CatalogPlugin)\n      // in the code block\n      //    Pair<CatalogPlugin, Identifier> catalogIdentifier =\n      // SparkUtil.catalogAndIdentifier(nameParts,\n      //        catalogName ->  {\n      //          try {\n      //            return catalogManager.catalog(catalogName);\n      //          } catch (Exception e) {\n      //            return null;\n      //          }\n      //        },\n      //        Identifier::of,\n      //        defaultCatalog,\n      //        currentNamespace\n      //    );\n      LOG.warn(\n          \"Catalog creation for inputName={} and options {} failed, because parameter \"\n              + \"'warehouse' is not set, Nessie can't store data.\",\n          name,\n          catalogOptions);\n      throw new IllegalStateException(\"Parameter 'warehouse' not set, Nessie can't store data.\");\n    }\n\n    return LocationUtil.stripTrailingSlash(warehouseLocation);\n  }\n\n  @Override\n  public void close() throws IOException {\n    if (null != closeableGroup) {\n      closeableGroup.close();\n    }\n  }\n\n  @Override","sourceCodeStart":187,"sourceCodeEnd":223,"githubUrl":"https://github.com/apache/iceberg/blob/86d9c8fc543e7c56c9f624eb725f76c9baff9570/nessie/src/main/java/org/apache/iceberg/nessie/NessieCatalog.java#L187-L223","documentation":"NessieCatalog.initialize logs this warning then throws IllegalStateException because the 'warehouse' parameter was not provided in the catalog options, and Nessie has no location to store data files. Nessie is a catalog-only service; the warehouse URI is required to construct table locations.","triggerScenarios":"Calling CatalogUtil.loadCatalog(NessieCatalog.class.getName(), ...) or configuring an engine catalog without 'warehouse' in the options map.","commonSituations":"Spark/Flink catalog config missing warehouse; only nessie.url and auth provided; typo in the option key (e.g. 'warehourse'); migrating config from another catalog that infers warehouse from elsewhere.","solutions":["Add the 'warehouse' option to the catalog configuration, e.g. warehouse=s3://bucket/path","Verify the option key spelling in your Spark/Flink conf (it must be exactly 'warehouse')","If using Spark SQL conf, set spark.sql.catalog.<name>.warehouse"],"exampleFix":"// before\nMap<String,String> opts = Map.of(\"url\",\"https://nessie.example.com\");\nCatalog c = CatalogUtil.loadCatalog(NessieCatalog.class.getName(), \"nessie\", opts);\n// after\nMap<String,String> opts = Map.of(\"url\",\"https://nessie.example.com\", \"warehouse\",\"s3://my-bucket/tables\");","handlingStrategy":"validation","validationCode":"if (!options.containsKey(\"warehouse\")) { throw new IllegalArgumentException(\"Nessie catalog requires 'warehouse' option\"); }","typeGuard":null,"tryCatchPattern":"try { catalog.initialize(name, options); } catch (IllegalStateException e) { if (e.getMessage().contains(\"warehouse\")) { /* prompt for warehouse config and retry */ } else throw e; }","preventionTips":["Always set spark.sql.catalog.<name>.warehouse for Nessie catalogs","Validate catalog option maps with a config checklist before loadCatalog","Watch for typos in option keys via a smoke-test catalog init in CI"],"tags":["nessie","configuration","warehouse"],"backgroundTag":"missing-required-config-field","analyzedSha":"86d9c8fc543e7c56c9f624eb725f76c9baff9570","analyzedAt":"2026-09-12T00:46:39.097Z","contentChangedAt":"2026-09-12T00:46:39.097Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}