{"record":{"id":"34e2d35a35bee53c","repo":"apache/seatunnel","slug":"gravitino-uri-is-required-please-configure-seatu","errorCode":null,"errorMessage":"Gravitino URI is required. Please configure 'seatunnel.engine.datasource.uri' in seatunnel.yaml","messagePattern":"Gravitino URI is required\\. Please configure 'seatunnel\\.engine\\.datasource\\.uri' in seatunnel\\.yaml","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"seatunnel-api/src/main/java/org/apache/seatunnel/api/metadata/gravitino/GravitinoMetadataProvider.java","lineNumber":141,"sourceCode":"                    .stringType()\n                    .noDefaultValue()\n                    .withDescription(\"Gravitino metalake name to use for data source metadata\");\n\n    @Override\n    public String kind() {\n        return \"gravitino\";\n    }\n\n    @Override\n    public void init(Config config) {\n        // Extract Gravitino-specific configuration\n        String uri = config.getString(URI.key());\n        String metalake = config.getString(METALAKE.key());\n        log.info(\"Gravitino server URI: {}\", uri);\n        log.info(\"Gravitino metalake name: {}\", metalake);\n        // Validate required parameters\n        if (uri == null || uri.isEmpty()) {\n            throw new IllegalArgumentException(\n                    \"Gravitino URI is required. Please configure 'seatunnel.engine.datasource.uri' in seatunnel.yaml\");\n        }\n        if (metalake == null || metalake.isEmpty()) {\n            throw new IllegalArgumentException(\n                    \"Gravitino metalake is required. Please configure 'seatunnel.engine.datasource.metalake' in seatunnel.yaml\");\n        }\n        this.uri = uri;\n        this.metalake = metalake;\n        this.client = new GravitinoClient();\n        this.tableSchemaConvertor = new GravitinoTableSchemaConvertor();\n    }\n\n    @Override\n    public Map<String, Object> datasourceMap(\n            String connectorIdentifier, String metaDataDatasourceId) {\n        if (!JDBC_CONNECTOR.equalsIgnoreCase(connectorIdentifier)) {\n            log.warn(\n                    \"Unsupported connector '{}' for Gravitino provider, only '{}' is supported\",","sourceCodeStart":123,"sourceCodeEnd":159,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-api/src/main/java/org/apache/seatunnel/api/metadata/gravitino/GravitinoMetadataProvider.java#L123-L159","documentation":"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.","triggerScenarios":"Thrown at seatunnel-api/src/main/java/org/apache/seatunnel/api/metadata/gravitino/GravitinoMetadataProvider.java:141 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","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"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"cf67b549a7a6c35fa0beb12d83c62892427ea919","analyzedAt":"2026-09-10T21:44:55.265Z","contentChangedAt":"2026-09-10T21:44:55.265Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}