apache/pulsar · error · IllegalArgumentException
Either Region or ServiceEndpoint must specified for ${driver
Error message
Either Region or ServiceEndpoint must specified for ${driver} offload What it means
Shared tiered-storage config validation (the VALIDATION lambda used by AWS/GCS/Azure drivers): neither managedLedgerOffloadRegion nor managedLedgerOffloadServiceEndpoint is set, leaving jclouds with no target region or endpoint; at least one must be configured for the named driver.
Source
Thrown at tiered-storage/jcloud/src/main/java/org/apache/bookkeeper/mledger/offload/jcloud/provider/JCloudBlobStoreProvider.java:290
private ProviderMetadata providerMetadata;
JCloudBlobStoreProvider(String s, ProviderMetadata providerMetadata) {
this.driver = s;
this.providerMetadata = providerMetadata;
}
public String getDriver() {
return driver;
}
public ProviderMetadata getProviderMetadata() {
return providerMetadata;
}
// Constants for reuse across AWS, GCS, and Azure, etc.
static final ConfigValidation VALIDATION = (TieredStorageConfiguration config) -> {
if (Strings.isNullOrEmpty(config.getRegion()) && Strings.isNullOrEmpty(config.getServiceEndpoint())) {
throw new IllegalArgumentException(
"Either Region or ServiceEndpoint must specified for " + config.getDriver() + " offload");
}
if (Strings.isNullOrEmpty(config.getBucket())) {
throw new IllegalArgumentException(
"Bucket cannot be empty for " + config.getDriver() + " offload");
}
if (config.getMaxBlockSizeInBytes() < (5 * 1024 * 1024)) {
throw new IllegalArgumentException(
"ManagedLedgerOffloadMaxBlockSizeInBytes cannot be less than 5MB for "
+ config.getDriver() + " offload");
}
};
static final BlobStoreBuilder BLOB_STORE_BUILDER = (TieredStorageConfiguration config) -> {
ContextBuilder contextBuilder = ContextBuilder.newBuilder(config.getProviderMetadata());
ShadedJCloudsUtils.addStandardModules(contextBuilder);View on GitHub (pinned to 820761864e)
Solutions
- Set managedLedgerOffloadServiceEndpoint or managedLedgerOffloadRegion
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at tiered-storage/jcloud/src/main/java/org/apache/bookkeeper/mledger/offload/jcloud/provider/JCloudBlobStoreProvider.java:290 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of apache/pulsar@820761864e (2026-09-06).
Data as JSON: /api/errors/9b99e5d08f671034.
Report an issue: GitHub.