apache/seatunnel · error · IllegalArgumentException

Gravitino metalake is required. Please configure…

Error message

Gravitino metalake is required. Please configure 'seatunnel.engine.datasource.metalake' in seatunnel.yaml

What it means

GravitinoMetadataProvider.init validated its configuration and found 'seatunnel.engine.datasource.metalake' missing or empty. The metalake name scopes all catalog/datasource lookups in Gravitino, so the provider refuses to start without it even when the URI is configured.

Solutions

  1. Set seatunnel.engine.datasource.metalake to an existing Gravitino metalake in seatunnel.yaml
  2. Verify the metalake actually exists in the Gravitino instance (list metalakes via the Gravitino API/CLI)
  3. Restart the node after saving the configuration
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at seatunnel-api/src/main/java/org/apache/seatunnel/api/metadata/gravitino/GravitinoMetadataProvider.java:145 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10). Data as JSON: /api/errors/fb4cb15f74fff313. Report an issue: GitHub.

Appendix: source

Thrown at seatunnel-api/src/main/java/org/apache/seatunnel/api/metadata/gravitino/GravitinoMetadataProvider.java:145

    @Override
    public String kind() {
        return "gravitino";
    }

    @Override
    public void init(Config config) {
        // Extract Gravitino-specific configuration
        String uri = config.getString(URI.key());
        String metalake = config.getString(METALAKE.key());
        log.info("Gravitino server URI: {}", uri);
        log.info("Gravitino metalake name: {}", metalake);
        // Validate required parameters
        if (uri == null || uri.isEmpty()) {
            throw new IllegalArgumentException(
                    "Gravitino URI is required. Please configure 'seatunnel.engine.datasource.uri' in seatunnel.yaml");
        }
        if (metalake == null || metalake.isEmpty()) {
            throw new IllegalArgumentException(
                    "Gravitino metalake is required. Please configure 'seatunnel.engine.datasource.metalake' in seatunnel.yaml");
        }
        this.uri = uri;
        this.metalake = metalake;
        this.client = new GravitinoClient();
        this.tableSchemaConvertor = new GravitinoTableSchemaConvertor();
    }

    @Override
    public Map<String, Object> datasourceMap(
            String connectorIdentifier, String metaDataDatasourceId) {
        if (!JDBC_CONNECTOR.equalsIgnoreCase(connectorIdentifier)) {
            log.warn(
                    "Unsupported connector '{}' for Gravitino provider, only '{}' is supported",
                    connectorIdentifier,
                    JDBC_CONNECTOR);
            return Collections.emptyMap();
        }

View on GitHub (pinned to cf67b549a7)