apache/seatunnel · error · org.apache.seatunnel.api.metadata.MetadataProviderException

Could not load service provider for MetadataProvider.

Error message

Could not load service provider for MetadataProvider.

What it means

Raised inside MetadataProviderFactory.loadProviders when the ServiceLoader iterating MetadataProvider SPI files throws a ServiceConfigurationError — a provider class on the classpath cannot be loaded (bad services file, static initializer failure, or missing dependency). Note loadProviders also logs 'No MetadataProvider implementations found' at INFO when the list is simply empty; that benign case is not this error.

Solutions

  1. Read the underlying ServiceConfigurationError to find the failing provider class
  2. Fix or delete the broken META-INF/services entry for MetadataProvider
  3. Ensure provider dependencies are present on the classloader used for loading
Defensive patterns

Strategy: try-catch

When it happens

Trigger: Thrown at seatunnel-api/src/main/java/org/apache/seatunnel/api/metadata/MetadataProviderFactory.java:128 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/dec1acedaa482a1e. Report an issue: GitHub.

Appendix: source

Thrown at seatunnel-api/src/main/java/org/apache/seatunnel/api/metadata/MetadataProviderFactory.java:128

                    .iterator()
                    .forEachRemaining(providers::add);

            if (providers.isEmpty()) {
                log.info("No MetadataProvider implementations found");
            } else {
                log.info(
                        "Loaded {} MetadataProvider: {}",
                        providers.size(),
                        providers.stream()
                                .map(MetadataProvider::kind)
                                .reduce((a, b) -> a + ", " + b)
                                .orElse(""));
            }

            return providers;
        } catch (ServiceConfigurationError e) {
            log.error("Could not load service provider for MetadataProvider.", e);
            throw new MetadataProviderException(
                    "Could not load service provider for MetadataProvider.", e);
        }
    }
}

View on GitHub (pinned to cf67b549a7)