{"record":{"id":"6aafd350120f1a21","repo":"apache/iceberg","slug":"cannot-update-namespace-s-s","errorCode":null,"errorMessage":"Cannot update namespace '%s': %s","messagePattern":"Cannot update namespace '(.+?)': (.+?)","errorType":"exception","errorClass":"UncheckedIOException","httpStatus":500,"severity":"error","filePath":"nessie/src/main/java/org/apache/iceberg/nessie/NessieIcebergClient.java","lineNumber":447,"sourceCode":"          NessieUtil.extractSingleConflict(e, EnumSet.of(Conflict.ConflictType.KEY_DOES_NOT_EXIST));\n      if (conflict.isPresent()\n          && conflict.get().conflictType() == Conflict.ConflictType.KEY_DOES_NOT_EXIST) {\n        throw new NoSuchNamespaceException(e, \"Namespace does not exist: %s\", namespace);\n      }\n      throw new UncheckedIOException(\n          String.format(\n              \"Cannot update properties on namespace '%s': %s\", namespace, e.getMessage()),\n          e);\n    } catch (NessieContentNotFoundException e) {\n      throw new NoSuchNamespaceException(\"Namespace does not exist: %s\", namespace);\n    } catch (NessieReferenceNotFoundException e) {\n      throw new UncheckedIOException(\n          String.format(\n              \"Cannot update properties on namespace '%s': ref '%s' is no longer valid.\",\n              namespace, getRef().getName()),\n          e);\n    } catch (BaseNessieClientServerException e) {\n      throw new UncheckedIOException(\n          String.format(\"Cannot update namespace '%s': %s\", namespace, e.getMessage()), e);\n    }\n  }\n\n  public void renameTable(TableIdentifier from, TableIdentifier to) {\n    renameContent(from, to, Content.Type.ICEBERG_TABLE);\n  }\n\n  public void renameView(TableIdentifier from, TableIdentifier to) {\n    renameContent(from, to, Content.Type.ICEBERG_VIEW);\n  }\n\n  private void renameContent(TableIdentifier from, TableIdentifier to, Content.Type type) {\n    getRef().checkMutable();\n\n    IcebergContent existingFromContent = fetchContent(from);\n    validateFromContentForRename(from, type, existingFromContent);\n","sourceCodeStart":429,"sourceCodeEnd":465,"githubUrl":"https://github.com/apache/iceberg/blob/86d9c8fc543e7c56c9f624eb725f76c9baff9570/nessie/src/main/java/org/apache/iceberg/nessie/NessieIcebergClient.java#L429-L465","documentation":"The catch-all in updateProperties: any other BaseNessieClientServerException from the commit (server errors, quota/validation errors, unexpected conflict types) is wrapped in an UncheckedIOException 'Cannot update namespace %s: <server message>'. It means the namespace property commit failed for a reason not covered by the more specific handlers.","triggerScenarios":"setProperties/removeProperties hitting any Nessie server-side exception not classified as reference-conflict, content-not-found, or reference-not-found — e.g. internal server errors, bad request from malformed properties, or license/quota errors.","commonSituations":"Nessie server partially unavailable or erroring; property values or keys rejected server-side; Nessie client/server version mismatch producing unrecognized error classes; proxy/gateway injecting error responses.","solutions":["Read the embedded e.getMessage() to identify the server-side cause and address it directly.","Check Nessie server health/logs for the corresponding request failure.","Verify Nessie client and server versions are compatible (same major/minor family).","Retry with backoff if the server was temporarily unhealthy; escalate with server logs if persistent."],"exampleFix":"// before\ncatalog.setProperties(ns, Map.of(\"k\", \"\\u0000bad\")); // server rejects, generic UncheckedIOException\n// after\ncatalog.setProperties(ns, Map.of(\"k\", \"bad\")); // use server-accepted property values","handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"try {\n  catalog.setProperties(ns, props);\n} catch (UncheckedIOException e) {\n  LOGGER.error(\"Nessie server rejected namespace update: {}\", e.getMessage(), e);\n  throw new ServiceException(e); // surface server message to operators\n}","preventionTips":["Keep Nessie client and server versions aligned.","Use plain string property keys/values accepted by the server.","Monitor Nessie server health before batch metadata operations.","Log the wrapped cause chain (UncheckedIOException -> BaseNessieClientServerException) for diagnosis."],"tags":["nessie","catalog","namespace","server-error","unchecked-io"],"backgroundTag":"http-error-response","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"}