apache/dolphinscheduler · error · IllegalArgumentException

remote.logging.abs.container.name is blank

Error message

remote.logging.abs.container.name is blank

What it means

AbsRemoteLogHandler.buildBlobContainerClient() validates remote logging configuration for Azure Blob Storage (ABS). When the configured container name (remote.logging.abs.container.name) is blank/null it throws IllegalArgumentException because remote log storage cannot be set up without a target container.

Source

Thrown at dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/log/remote/AbsRemoteLogHandler.java:73

    }

    public static synchronized AbsRemoteLogHandler getInstance() {
        if (instance == null) {
            instance = new AbsRemoteLogHandler();
        }

        return instance;
    }

    protected BlobContainerClient buildBlobContainerClient() {

        BlobServiceClient serviceClient = new BlobServiceClientBuilder()
                .endpoint(String.format("https://%s.blob.core.windows.net/", accountName))
                .credential(new StorageSharedKeyCredential(accountName, accountKey))
                .buildClient();

        if (StringUtils.isBlank(containerName)) {
            throw new IllegalArgumentException("remote.logging.abs.container.name is blank");
        }

        try {
            this.blobContainerClient = serviceClient.getBlobContainerClient(containerName);
        } catch (Exception ex) {
            throw new IllegalArgumentException(
                    "containerName: " + containerName + " is not exists, you need to create them by yourself");
        }

        log.info("containerName: {} has been found.", containerName);

        return blobContainerClient;
    }

    @Override
    public void close() throws IOException {
        // no need to close blobContainerClient
    }

View on GitHub (pinned to 02eac45a1b)

Solutions

  1. Set remote.logging.abs.container.name to an existing Azure Blob container name in the remote logging configuration.
  2. Verify the property key is correct and actually being loaded (check for typos and that the config file is on the classpath) so it is not read as blank.
  3. Create the container in the Azure storage account beforehand, since the handler expects it to exist (see the follow-up not-exists error).

Example fix

// before
remote.logging.abs.container.name=

// after
remote.logging.abs.container.name=dolphinscheduler-remote-logs
Defensive patterns

Strategy: validation

Validate before calling

String container = config.getRemoteLoggingAbsContainerName();
if (StringUtils.isBlank(container)) {
    throw new IllegalArgumentException("remote.logging.abs.container.name must be set when remote logging is enabled");
}

Try / catch

try {
    new AbsRemoteLogHandler(config);
} catch (IllegalArgumentException e) {
    log.error("Azure remote logging misconfigured: {}", e.getMessage());
}

Prevention

When it happens

Trigger: Enabling remote logging with abs as remote-log-storage-type but leaving remote.logging.abs.container.name empty (or whitespace) in the remote-logging configuration, when the handler is constructed.

Common situations: Copying a remote-logging config template and only filling account/key; typos or wrong config keys so the container name property never loads; container name omitted in dolphinscheduler remote log properties.

Understand the failure class

Background: "is required", "must be set", "missing required field": configuration validation errors across open-source libraries — this error's family across 36 libraries.

Related errors


AI-assisted analysis of apache/dolphinscheduler@02eac45a1b (2026-09-06). Data as JSON: /api/errors/54fabe34f5c3cdd3. Report an issue: GitHub.