{"record":{"id":"ad998004146105a1","repo":"apache/seatunnel","slug":"no-metadataprovider-found-for-kind-s-availabl","errorCode":null,"errorMessage":"No MetadataProvider found for kind '%s'.\n\nAvailable provider kinds are:\n\n%s","messagePattern":"No MetadataProvider found for kind '(.+?)'\\.\n\nAvailable provider kinds are:\n\n(.+?)","errorType":"exception","errorClass":"org.apache.seatunnel.api.metadata.MetadataProviderException","httpStatus":null,"severity":"error","filePath":"seatunnel-api/src/main/java/org/apache/seatunnel/api/metadata/MetadataProviderFactory.java","lineNumber":80,"sourceCode":"                            matchedKinds);\n                    throw new MetadataProviderException(\n                            String.format(\n                                    \"Multiple MetadataProvider implementations found for kind '%s'.\\n\\n\"\n                                            + \"Ambiguous provider classes are:\\n\\n%s\",\n                                    kind, String.join(\"\\n\", matchedKinds)));\n                }\n                matchedProvider = provider;\n                matchedKinds.add(provider.getClass().getName());\n            }\n        }\n\n        if (matchedProvider == null) {\n            List<String> availableKinds = new ArrayList<>();\n            for (MetadataProvider provider : providers) {\n                availableKinds.add(provider.kind());\n            }\n            log.debug(\"No MetadataProvider found for kind: {}\", kind);\n            throw new MetadataProviderException(\n                    String.format(\n                            \"No MetadataProvider found for kind '%s'.\\n\\n\"\n                                    + \"Available provider kinds are:\\n\\n%s\",\n                            kind, String.join(\"\\n\", availableKinds)));\n        }\n\n        return matchedProvider;\n    }\n\n    /**\n     * Clears the provider cache.\n     *\n     * <p>This method is primarily intended for testing purposes. Currently, this method does\n     * nothing as providers are loaded on-demand via SPI without caching.\n     */\n    public static void clearCache() {\n        // No-op for testing compatibility\n    }","sourceCodeStart":62,"sourceCodeEnd":98,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-api/src/main/java/org/apache/seatunnel/api/metadata/MetadataProviderFactory.java#L62-L98","documentation":"MetadataProviderFactory.getProvider iterated every loaded SPI implementation and none had a kind() equal (case-insensitively) to the requested kind. The message lists the kinds that are actually available, which usually shows a typo or a missing plugin jar. The input at fault is the 'kind' string requested by the caller (e.g. the metadata datasource config in seatunnel.yaml).","triggerScenarios":"Thrown at seatunnel-api/src/main/java/org/apache/seatunnel/api/metadata/MetadataProviderFactory.java:80 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Compare the requested kind with the 'Available provider kinds' list in the message and fix typos/case differences","Install the connector/plugin jar that provides the missing MetadataProvider kind","If writing a custom provider, verify its kind() matches what the datasource config references and that it is registered via SPI"],"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"}