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

  1. Retry the load after the Snowflake table operation completes
  2. Check the table's status in Snowflake (SHOW ICEBERG TABLES / DESCRIBE) to find why it is not 'success'
  3. 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

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


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)