{"record":{"id":"ab272e0c3d409e75","repo":"apache/iceberg","slug":"namespace-s-s-properties-object-is-absent","errorCode":null,"errorMessage":"Namespace %s(%s) properties object is absent","messagePattern":"Namespace (.+?)\\((.+?)\\) properties object is absent","errorType":"exception","errorClass":"NoSuchNamespaceException","httpStatus":null,"severity":"error","filePath":"dell/src/main/java/org/apache/iceberg/dell/ecs/EcsCatalog.java","lineNumber":325,"sourceCode":"  private Namespace parseNamespace(Namespace parent, EcsURI prefix, S3Object s3Object) {\n    String key = s3Object.getKey();\n    Preconditions.checkArgument(\n        key.startsWith(prefix.name()), \"List result should have same prefix\", key, prefix);\n\n    String namespaceName =\n        key.substring(prefix.name().length(), key.length() - NAMESPACE_OBJECT_SUFFIX.length());\n    String[] namespace = Arrays.copyOf(parent.levels(), parent.levels().length + 1);\n    namespace[namespace.length - 1] = namespaceName;\n    return Namespace.of(namespace);\n  }\n\n  /** Load namespace properties. */\n  @Override\n  public Map<String, String> loadNamespaceMetadata(Namespace namespace)\n      throws NoSuchNamespaceException {\n    EcsURI namespaceObject = namespaceURI(namespace);\n    if (!objectMetadata(namespaceObject).isPresent()) {\n      throw new NoSuchNamespaceException(\n          \"Namespace %s(%s) properties object is absent\", namespace, namespaceObject);\n    }\n\n    Map<String, String> result = loadProperties(namespaceObject).content();\n\n    LOG.debug(\"Loaded metadata for namespace {} found {}\", namespace, result);\n    return result;\n  }\n\n  @Override\n  public boolean dropNamespace(Namespace namespace) throws NamespaceNotEmptyException {\n    if (!namespace.isEmpty() && !namespaceExists(namespace)) {\n      throw new NoSuchNamespaceException(\"Namespace %s does not exist\", namespace);\n    }\n\n    if (!listNamespaces(namespace).isEmpty() || !listTables(namespace).isEmpty()) {\n      throw new NamespaceNotEmptyException(\"Namespace %s is not empty\", namespace);\n    }","sourceCodeStart":307,"sourceCodeEnd":343,"githubUrl":"https://github.com/apache/iceberg/blob/86d9c8fc543e7c56c9f624eb725f76c9baff9570/dell/src/main/java/org/apache/iceberg/dell/ecs/EcsCatalog.java#L307-L343","documentation":"Failure in EcsCatalog.loadNamespaceMetadata: the namespace exists as a listing entry but its ECS properties object (the marker object holding namespace properties) is absent, so metadata cannot be loaded. This indicates an incomplete or externally-created namespace layout in the ECS bucket.","triggerScenarios":"Calling loadNamespaceMetadata(namespace) when no namespace properties object exists at the computed namespaceURI, e.g. namespace never created or its marker object deleted out of band.","commonSituations":"Loading a namespace after someone deleted the marker object directly in ECS, wrong catalog warehouse prefix configuration, case/typo differences in namespace names.","solutions":["Confirm the namespace exists with namespaceExists before loading metadata","Recreate the namespace with createNamespace if it was deleted","Verify the catalog's warehouse/ECS prefix configuration matches where namespaces were created"],"exampleFix":"// before\nMap<String,String> props = catalog.loadNamespaceMetadata(ns);\n// after\nif (catalog.namespaceExists(ns)) {\n  Map<String,String> props = catalog.loadNamespaceMetadata(ns);\n}","handlingStrategy":"try-catch","validationCode":"boolean exists = catalog.namespaceExists(namespace);","typeGuard":null,"tryCatchPattern":"try { return catalog.loadNamespaceMetadata(ns); } catch (NoSuchNamespaceException e) { return Collections.emptyMap(); }","preventionTips":["Confirm the namespace was created through the catalog, not raw ECS objects","Verify warehouse/prefix configuration consistency across environments","Don't delete namespace marker objects directly in ECS"],"tags":["catalog","namespace","ecs"],"backgroundTag":"entity-not-found","analyzedSha":"86d9c8fc543e7c56c9f624eb725f76c9baff9570","analyzedAt":"2026-09-12T00:46:39.097Z","contentChangedAt":"2026-09-12T00:46:39.097Z","schemaVersion":2},"datasetVersion":"2026-09-14T16:17:12.679Z"}