{"record":{"id":"41d88e529ef4af1c","repo":"apache/pulsar","slug":"bucket-cannot-be-empty-for-local-offload","errorCode":null,"errorMessage":"Bucket cannot be empty for Local offload","messagePattern":"Bucket cannot be empty for Local offload","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"tiered-storage/jcloud/src/main/java/org/apache/bookkeeper/mledger/offload/jcloud/provider/JCloudBlobStoreProvider.java","lineNumber":216,"sourceCode":"            return S3_BLOB_STORE_BUILDER.getBlobStore(config);\n        }\n\n        @Override\n        public void buildCredentials(TieredStorageConfiguration config) {\n            S3_CREDENTIAL_BUILDER.buildCredentials(config);\n        }\n\n        @Override\n        public void validate(TieredStorageConfiguration config) throws IllegalArgumentException {\n            S3_VALIDATION.validate(config);\n        }\n    },\n\n    TRANSIENT(\"transient\", new AnonymousProviderMetadata(new TransientApiMetadata(), \"\")) {\n        @Override\n        public void validate(TieredStorageConfiguration config) throws IllegalArgumentException {\n            if (Strings.isNullOrEmpty(config.getBucket())) {\n                throw new IllegalArgumentException(\n                    \"Bucket cannot be empty for Local offload\");\n            }\n        }\n\n        @Override\n        public BlobStore getBlobStore(TieredStorageConfiguration config) {\n\n            ContextBuilder contextBuilder =  ContextBuilder.newBuilder(\"transient\");\n            ShadedJCloudsUtils.addStandardModules(contextBuilder);\n            BlobStoreContext ctx = contextBuilder\n                    .buildView(BlobStoreContext.class);\n\n            BlobStore bs = ctx.getBlobStore();\n\n            if (!bs.containerExists(config.getBucket())) {\n                Location loc = new LocationBuilder()\n                        .scope(LocationScope.HOST)\n                        .id(UUID.randomUUID() + \"\")","sourceCodeStart":198,"sourceCodeEnd":234,"githubUrl":"https://github.com/apache/pulsar/blob/820761864ed8e2a7d2e52dd9763ad2ae117c1395/tiered-storage/jcloud/src/main/java/org/apache/bookkeeper/mledger/offload/jcloud/provider/JCloudBlobStoreProvider.java#L198-L234","documentation":"Tiered-storage config validation in JCloudBlobStoreProvider's TRANSIENT driver: the bucket (or container) setting required for transient S3-compatible offload is empty, so the blob-store target is undefined and validation aborts; the managedLedgerOffloadBucket configuration key is the faulty input.","triggerScenarios":"Thrown at tiered-storage/jcloud/src/main/java/org/apache/bookkeeper/mledger/offload/jcloud/provider/JCloudBlobStoreProvider.java:216 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Set managedLedgerOffloadBucket in the broker configuration"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"820761864ed8e2a7d2e52dd9763ad2ae117c1395","analyzedAt":"2026-09-06T00:14:20.138Z","contentChangedAt":"2026-09-06T00:14:20.138Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}