{"record":{"id":"fb4cb15f74fff313","repo":"apache/seatunnel","slug":"gravitino-metalake-is-required-please-configure","errorCode":null,"errorMessage":"Gravitino metalake is required. Please configure 'seatunnel.engine.datasource.metalake' in seatunnel.yaml","messagePattern":"Gravitino metalake is required\\. Please configure 'seatunnel\\.engine\\.datasource\\.metalake' 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":145,"sourceCode":"    @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\",\n                    connectorIdentifier,\n                    JDBC_CONNECTOR);\n            return Collections.emptyMap();\n        }","sourceCodeStart":127,"sourceCodeEnd":163,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-api/src/main/java/org/apache/seatunnel/api/metadata/gravitino/GravitinoMetadataProvider.java#L127-L163","documentation":"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.","triggerScenarios":"Thrown at seatunnel-api/src/main/java/org/apache/seatunnel/api/metadata/gravitino/GravitinoMetadataProvider.java:145 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Set seatunnel.engine.datasource.metalake to an existing Gravitino metalake in seatunnel.yaml","Verify the metalake actually exists in the Gravitino instance (list metalakes via the Gravitino API/CLI)","Restart the node after saving the configuration"],"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"}