apache/pulsar · error · org.apache.pulsar.broker.admin.RestException

The driver is not supported, support value: ${supportedDrive

Error message

The driver is not supported, support value: ${supportedDriverNames}

What it means

The offload driver configured in the namespace's OffloadPolicies is not one the broker supports; validation fails with HTTP 412 PRECONDITION_FAILED. OffloadPoliciesImpl.getSupportedDriverNames() lists the drivers compiled into this broker build (e.g. aws-s3, s3, gcs, azureblob, filesystem depending on version), and driverSupported() must return true.

Source

Thrown at pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/AdminResource.java:1059

    protected AuthorizationService getAuthorizationService() {
        return pulsar().getBrokerService().getAuthorizationService();
    }

    protected void validateOffloadPolicies(OffloadPoliciesImpl offloadPolicies) {
        if (offloadPolicies == null) {
            log.warn()
                    .attr("namespace", namespaceName)
                    .log("Failed to update offload configuration for namespace : offloadPolicies is null");
            throw new RestException(Status.PRECONDITION_FAILED,
                    "The offloadPolicies must be specified for namespace offload.");
        }
        if (!offloadPolicies.driverSupported()) {
            log.warn()
                    .attr("namespace", namespaceName)
                    .attr("value", OffloadPoliciesImpl.getSupportedDriverNames())
                    .log("Failed to update offload configuration for namespace: driver is not supported, support"
                            + " value");
            throw new RestException(Status.PRECONDITION_FAILED,
                    "The driver is not supported, support value: " + OffloadPoliciesImpl.getSupportedDriverNames());
        }
        if (!offloadPolicies.bucketValid()) {
            log.warn()
                    .attr("namespace", namespaceName)
                    .log("Failed to update offload configuration for namespace : bucket must be specified");
            throw new RestException(Status.PRECONDITION_FAILED,
                    "The bucket must be specified for namespace offload.");
        }
    }

    protected CompletableFuture<Void> internalCheckTopicExists(TopicName topicName) {
        return pulsar().getNamespaceService().checkTopicExistsAsync(topicName)
                .thenAccept(info -> {
                    boolean exists = info.isExists();
                    info.recycle();
                    if (!exists) {
                        throw new RestException(Status.NOT_FOUND, getTopicNotFoundErrorMessage(topicName.toString()));

View on GitHub (pinned to 820761864e)

Solutions

  1. Set the driver to one of the names reported in the error message (the list from OffloadPoliciesImpl.getSupportedDriverNames() for your broker version).
  2. If upgrading from an older Pulsar, migrate the driver name to the new identifier (e.g. legacy aws-sdk -> aws-s3).
  3. Install the matching offloader distribution: download the offloaders tarball for your storage provider into the broker's offloaders directory and restart.
  4. If using a custom driver plugin, verify it is registered/loaded and its getName() matches the configured driver string exactly.

Example fix

// before (412: unsupported/renamed driver)
OffloadPoliciesImpl p = OffloadPoliciesImpl.builder().setDriver("aws-sdk").setBucket("b").build();
// after
OffloadPoliciesImpl p = OffloadPoliciesImpl.builder().setDriver("aws-s3").setBucket("b").build();
Defensive patterns

Strategy: validation

Validate before calling

// Java
Set<String> supported = Set.of(OffloadPoliciesImpl.getSupportedDriverNames().split(","));
if (!supported.contains(policies.getDriver())) {
    throw new IllegalArgumentException("driver must be one of: " + supported);
}

Try / catch

try {
    admin.namespaces().setOffloadPolicies(ns, policies);
} catch (PulsarAdminException.PreconditionFailedException e) {
    if (e.getMessage().startsWith("The driver is not supported")) {
        // switch to a driver listed in the message for this broker build
    }
}

Prevention

When it happens

Trigger: Calling the namespace offload policy update API (setOffloadPolicies) with an OffloadPolicies whose driver name is misspelled, renamed (Pulsar renamed drivers across versions, e.g. 'aws-sdk' to 'aws-s3'), or provided by a plugin not installed on the broker.

Common situations: 1) Version upgrade renamed driver identifiers and old configs still carry the legacy name. 2) Typo like 's3' vs 'aws-s3' or case mismatch. 3) Broker lacks the offloader jar in ./offloaders so the driver isn't available.

Related errors


AI-assisted analysis of apache/pulsar@820761864e (2026-09-06). Data as JSON: /api/errors/a64fc84144c2e572. Report an issue: GitHub.