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
- Set the driver to one of the names reported in the error message (the list from OffloadPoliciesImpl.getSupportedDriverNames() for your broker version).
- If upgrading from an older Pulsar, migrate the driver name to the new identifier (e.g. legacy aws-sdk -> aws-s3).
- Install the matching offloader distribution: download the offloaders tarball for your storage provider into the broker's offloaders directory and restart.
- 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
- Copy driver names exactly from the error's supported list for your broker version.
- After Pulsar upgrades, re-check driver identifiers (they were renamed across releases).
- Ensure the offloaders directory on brokers contains the plugin for the chosen driver.
- Standardize driver names in config management to avoid typos and case mismatches.
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
- The offloadPolicies must be specified for namespace offload.
- The bucket must be specified for namespace offload.
- Offload already in progress
- The topic has a max partition index of %d, the number of par
- entryFilterNames can't be empty. To remove entry filters use
AI-assisted analysis of apache/pulsar@820761864e (2026-09-06).
Data as JSON: /api/errors/a64fc84144c2e572.
Report an issue: GitHub.