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
- Add seatunnel.engine.datasource.uri (e.g. http://gravitino-host:8090) under seatunnel.engine.datasource in seatunnel.yaml
- Restart the SeaTunnel node after editing seatunnel.yaml so the config is re-read
- 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)