{"record":{"id":"a64fc84144c2e572","repo":"apache/pulsar","slug":"the-driver-is-not-supported-support-value-supp","errorCode":null,"errorMessage":"The driver is not supported, support value: ${supportedDriverNames}","messagePattern":"The driver is not supported, support value: (.+?)","errorType":"http","errorClass":"org.apache.pulsar.broker.admin.RestException","httpStatus":412,"severity":"error","filePath":"pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/AdminResource.java","lineNumber":1059,"sourceCode":"    protected AuthorizationService getAuthorizationService() {\n        return pulsar().getBrokerService().getAuthorizationService();\n    }\n\n    protected void validateOffloadPolicies(OffloadPoliciesImpl offloadPolicies) {\n        if (offloadPolicies == null) {\n            log.warn()\n                    .attr(\"namespace\", namespaceName)\n                    .log(\"Failed to update offload configuration for namespace : offloadPolicies is null\");\n            throw new RestException(Status.PRECONDITION_FAILED,\n                    \"The offloadPolicies must be specified for namespace offload.\");\n        }\n        if (!offloadPolicies.driverSupported()) {\n            log.warn()\n                    .attr(\"namespace\", namespaceName)\n                    .attr(\"value\", OffloadPoliciesImpl.getSupportedDriverNames())\n                    .log(\"Failed to update offload configuration for namespace: driver is not supported, support\"\n                            + \" value\");\n            throw new RestException(Status.PRECONDITION_FAILED,\n                    \"The driver is not supported, support value: \" + OffloadPoliciesImpl.getSupportedDriverNames());\n        }\n        if (!offloadPolicies.bucketValid()) {\n            log.warn()\n                    .attr(\"namespace\", namespaceName)\n                    .log(\"Failed to update offload configuration for namespace : bucket must be specified\");\n            throw new RestException(Status.PRECONDITION_FAILED,\n                    \"The bucket must be specified for namespace offload.\");\n        }\n    }\n\n    protected CompletableFuture<Void> internalCheckTopicExists(TopicName topicName) {\n        return pulsar().getNamespaceService().checkTopicExistsAsync(topicName)\n                .thenAccept(info -> {\n                    boolean exists = info.isExists();\n                    info.recycle();\n                    if (!exists) {\n                        throw new RestException(Status.NOT_FOUND, getTopicNotFoundErrorMessage(topicName.toString()));","sourceCodeStart":1041,"sourceCodeEnd":1077,"githubUrl":"https://github.com/apache/pulsar/blob/820761864ed8e2a7d2e52dd9763ad2ae117c1395/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/AdminResource.java#L1041-L1077","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","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."],"exampleFix":"// before (412: unsupported/renamed driver)\nOffloadPoliciesImpl p = OffloadPoliciesImpl.builder().setDriver(\"aws-sdk\").setBucket(\"b\").build();\n// after\nOffloadPoliciesImpl p = OffloadPoliciesImpl.builder().setDriver(\"aws-s3\").setBucket(\"b\").build();","handlingStrategy":"validation","validationCode":"// Java\nSet<String> supported = Set.of(OffloadPoliciesImpl.getSupportedDriverNames().split(\",\"));\nif (!supported.contains(policies.getDriver())) {\n    throw new IllegalArgumentException(\"driver must be one of: \" + supported);\n}","typeGuard":null,"tryCatchPattern":"try {\n    admin.namespaces().setOffloadPolicies(ns, policies);\n} catch (PulsarAdminException.PreconditionFailedException e) {\n    if (e.getMessage().startsWith(\"The driver is not supported\")) {\n        // switch to a driver listed in the message for this broker build\n    }\n}","preventionTips":["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."],"tags":["pulsar","broker","precondition-failed","offload","storage-driver"],"backgroundTag":"unsupported-driver","analyzedSha":"820761864ed8e2a7d2e52dd9763ad2ae117c1395","analyzedAt":"2026-09-06T00:14:20.138Z","contentChangedAt":"2026-09-06T00:14:20.138Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}