apache/iceberg · warning
Got non-successful table metadata
Error message
Got non-successful table metadata: {} with metadataLocation {} for table {} What it means
SnowflakeTableOperations.loadTableMetadataLocation logs a warning when the Snowflake metadata returned for a table has a status other than 'success'. The table exists, but its metadata status indicates it may not be ready or consistent; the code proceeds using the returned metadata location instead of throwing.
Solutions
- Retry the load after the Snowflake table operation completes
- Check the table's status in Snowflake (SHOW ICEBERG TABLES / DESCRIBE) to find why it is not 'success'
- If the status is permanently non-successful, drop and recreate the table metadata in Snowflake
Example fix
// before Table table = catalog.loadTable(identifier); // status not yet 'success' // after Table table = waitForSuccessStatus(catalog, identifier); // poll until status == 'success' before loading
Defensive patterns
Strategy: retry
Validate before calling
// Check table status before loading // SELECT status FROM snowflake.information_schema... or SHOW ICEBERG TABLES to confirm 'success'
Type guard
boolean isReady(ResultSet rs) { return "success".equals(rs.getString("status")); } Try / catch
for (int i = 0; i < 5; i++) { try { return catalog.loadTable(identifier); } catch (NoSuchTableException | RuntimeException e) { /* metadata status not success; sleep and retry */ } } Prevention
- Avoid reading Iceberg tables immediately after CREATE/ALTER in Snowflake
- Poll table status until 'success' before catalog loads
- Add retry with backoff around Snowflake table operations
When it happens
Trigger: Calling refresh()/location() on a Snowflake table whose underlying metadata status is not 'success' (e.g. the table is being created/altered/dropped in Snowflake, or replication/synchronization is pending).
Common situations: Reading a table during an in-flight CREATE/ALTER on the Snowflake side; tables created but not yet published as Iceberg; transient Snowflake-side state issues.
Related errors
- loadNamespaceMetadata must be at either DATABASE or SCHEMA…
- Cannot commit due to unexpected exception
- Cannot convert identifier
- Cannot create namespace " + namespace + ": metadata is not…
- Cannot find table
AI-assisted analysis of apache/iceberg@86d9c8fc54 (2026-09-12).
Data as JSON: /api/errors/bc3edbad8aeddf2c.
Report an issue: GitHub.
Appendix: source
Thrown at snowflake/src/main/java/org/apache/iceberg/snowflake/SnowflakeTableOperations.java:89
protected String tableName() {
return fullTableName;
}
@VisibleForTesting
String fullTableName() {
return tableName();
}
private String loadTableMetadataLocation() {
SnowflakeTableMetadata metadata =
snowflakeClient.loadTableMetadata(snowflakeIdentifierForTable);
if (metadata == null) {
throw new NoSuchTableException("Cannot find table %s", snowflakeIdentifierForTable);
}
if (!metadata.getStatus().equals("success")) {
LOG.warn(
"Got non-successful table metadata: {} with metadataLocation {} for table {}",
metadata.getStatus(),
metadata.icebergMetadataLocation(),
snowflakeIdentifierForTable);
}
return metadata.icebergMetadataLocation();
}
}
View on GitHub (pinned to 86d9c8fc54)