{"record":{"id":"9be994921a61548b","repo":"apache/iceberg","slug":"metadata-object-s-is-absent-while-refresh-a-loade","errorCode":null,"errorMessage":"Metadata object %s is absent while refresh a loaded table. Maybe the table is deleted/moved.","messagePattern":"Metadata object (.+?) is absent while refresh a loaded table\\. Maybe the table is deleted/moved\\.","errorType":"exception","errorClass":"NoSuchTableException","httpStatus":null,"severity":"error","filePath":"dell/src/main/java/org/apache/iceberg/dell/ecs/EcsTableOperations.java","lineNumber":70,"sourceCode":"    this.catalog = catalog;\n  }\n\n  @Override\n  protected String tableName() {\n    return tableName;\n  }\n\n  @Override\n  public FileIO io() {\n    return fileIO;\n  }\n\n  @Override\n  protected void doRefresh() {\n    String metadataLocation;\n    if (!catalog.objectMetadata(tableObject).isPresent()) {\n      if (currentMetadataLocation() != null) {\n        throw new NoSuchTableException(\n            \"Metadata object %s is absent while refresh a loaded table. \"\n                + \"Maybe the table is deleted/moved.\",\n            tableObject);\n      } else {\n        metadataLocation = null;\n      }\n    } else {\n      EcsCatalog.Properties metadata = catalog.loadProperties(tableObject);\n      this.eTag = metadata.eTag();\n      metadataLocation = metadata.content().get(ICEBERG_METADATA_LOCATION);\n      Preconditions.checkNotNull(\n          metadataLocation, \"Can't find location from table metadata %s\", tableObject);\n    }\n\n    refreshFromMetadataLocation(metadataLocation);\n  }\n\n  @Override","sourceCodeStart":52,"sourceCodeEnd":88,"githubUrl":"https://github.com/apache/iceberg/blob/86d9c8fc543e7c56c9f624eb725f76c9baff9570/dell/src/main/java/org/apache/iceberg/dell/ecs/EcsTableOperations.java#L52-L88","documentation":"NoSuchTableException thrown by EcsTableOperations.doRefresh when the table's metadata object disappeared from ECS during a refresh of an already-loaded table. It signals the table was deleted or moved after it was loaded.","triggerScenarios":"Refreshing a previously loaded Table whose metadata properties object no longer exists in ECS (currentMetadataLocation was non-null).","commonSituations":"Another process dropped the table while a long-running job held a loaded reference, manual deletion of ECS objects, table moved to a different location.","solutions":["Reload the table from the catalog instead of refreshing a stale reference","Coordinate table drops with running consumers","Check whether the table was deleted/moved and re-create or re-point it"],"exampleFix":"// before\ntable.refresh();\n// after\ntry {\n  table.refresh();\n} catch (NoSuchTableException e) {\n  table = catalog.loadTable(tableId); // reload or handle deletion\n}","handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"try { table.refresh(); } catch (NoSuchTableException e) { table = catalog.loadTable(tableId); /* or stop processing */ }","preventionTips":["Coordinate table drops with long-running consumers","Reload tables from the catalog after detecting deletion","Never delete table metadata objects directly in ECS"],"tags":["table","ecs","stale-reference"],"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-23T08:17:48.524Z"}