apache/seatunnel · error · IllegalArgumentException

Gravitino URI is required. Please configure…

Error message

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

What it means

GravitinoMetadataProvider.init validated its seatunnel.yaml-derived config and found 'seatunnel.engine.datasource.uri' missing or empty. This is a pure configuration guard: before any Gravitino call is made, the provider requires the Gravitino server URI; without it no metalake/datasource requests can be issued.

Solutions

  1. Add seatunnel.engine.datasource.uri (e.g. http://gravitino-host:8090) under seatunnel.engine.datasource in seatunnel.yaml
  2. Restart the SeaTunnel node after editing seatunnel.yaml so the config is re-read
  3. Confirm the YAML indentation places uri under the datasource block next to the gravitino provider and metalake settings
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at seatunnel-api/src/main/java/org/apache/seatunnel/api/metadata/gravitino/GravitinoMetadataProvider.java:141 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/34e2d35a35bee53c. Report an issue: GitHub.

Appendix: source

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

                    .stringType()
                    .noDefaultValue()
                    .withDescription("Gravitino metalake name to use for data source metadata");

    @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",

View on GitHub (pinned to cf67b549a7)