{"record":{"id":"31c8bc87de777e80","repo":"apache/pulsar","slug":"managedledgeroffloadmaxblocksizeinbytes-cannot-be","errorCode":null,"errorMessage":"ManagedLedgerOffloadMaxBlockSizeInBytes cannot be less than 5MB for ${driver} offload","messagePattern":"ManagedLedgerOffloadMaxBlockSizeInBytes cannot be less than 5MB for (.+?) 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":300,"sourceCode":"\n    public ProviderMetadata getProviderMetadata() {\n        return providerMetadata;\n    }\n\n    // Constants for reuse across AWS, GCS, and Azure, etc.\n    static final ConfigValidation VALIDATION = (TieredStorageConfiguration config) -> {\n        if (Strings.isNullOrEmpty(config.getRegion()) && Strings.isNullOrEmpty(config.getServiceEndpoint())) {\n            throw new IllegalArgumentException(\n                \"Either Region or ServiceEndpoint must specified for \" + config.getDriver() + \" offload\");\n        }\n\n        if (Strings.isNullOrEmpty(config.getBucket())) {\n            throw new IllegalArgumentException(\n                \"Bucket cannot be empty for \" + config.getDriver() + \" offload\");\n        }\n\n        if (config.getMaxBlockSizeInBytes() < (5 * 1024 * 1024)) {\n            throw new IllegalArgumentException(\n                \"ManagedLedgerOffloadMaxBlockSizeInBytes cannot be less than 5MB for \"\n                + config.getDriver() + \" offload\");\n        }\n    };\n\n    static final BlobStoreBuilder BLOB_STORE_BUILDER = (TieredStorageConfiguration config) -> {\n        ContextBuilder contextBuilder = ContextBuilder.newBuilder(config.getProviderMetadata());\n        ShadedJCloudsUtils.addStandardModules(contextBuilder);\n        contextBuilder.overrides(config.getOverrides());\n\n        if (StringUtils.isNotEmpty(config.getServiceEndpoint())) {\n            contextBuilder.endpoint(config.getServiceEndpoint());\n        }\n\n        if (config.getProviderCredentials() != null) {\n                return contextBuilder\n                        .credentialsSupplier(config.getCredentials()::get)\n                        .buildView(BlobStoreContext.class)","sourceCodeStart":282,"sourceCodeEnd":318,"githubUrl":"https://github.com/apache/pulsar/blob/820761864ed8e2a7d2e52dd9763ad2ae117c1395/tiered-storage/jcloud/src/main/java/org/apache/bookkeeper/mledger/offload/jcloud/provider/JCloudBlobStoreProvider.java#L282-L318","documentation":"Shared tiered-storage config validation (the VALIDATION lambda used by AWS/GCS/Azure drivers): managedLedgerOffloadMaxBlockSizeInBytes is below the 5MB minimum the drivers impose (S3 multipart limits), so block size validation aborts; the max-block-size configuration value is the faulty input.","triggerScenarios":"Thrown at tiered-storage/jcloud/src/main/java/org/apache/bookkeeper/mledger/offload/jcloud/provider/JCloudBlobStoreProvider.java:300 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Raise managedLedgerOffloadMaxBlockSizeInBytes to at least 5MB"],"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-14T00:17:10.932Z"}