{"record":{"id":"54fabe34f5c3cdd3","repo":"apache/dolphinscheduler","slug":"remote-logging-abs-container-name-is-blank","errorCode":null,"errorMessage":"remote.logging.abs.container.name is blank","messagePattern":"remote\\.logging\\.abs\\.container\\.name is blank","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/log/remote/AbsRemoteLogHandler.java","lineNumber":73,"sourceCode":"    }\n\n    public static synchronized AbsRemoteLogHandler getInstance() {\n        if (instance == null) {\n            instance = new AbsRemoteLogHandler();\n        }\n\n        return instance;\n    }\n\n    protected BlobContainerClient buildBlobContainerClient() {\n\n        BlobServiceClient serviceClient = new BlobServiceClientBuilder()\n                .endpoint(String.format(\"https://%s.blob.core.windows.net/\", accountName))\n                .credential(new StorageSharedKeyCredential(accountName, accountKey))\n                .buildClient();\n\n        if (StringUtils.isBlank(containerName)) {\n            throw new IllegalArgumentException(\"remote.logging.abs.container.name is blank\");\n        }\n\n        try {\n            this.blobContainerClient = serviceClient.getBlobContainerClient(containerName);\n        } catch (Exception ex) {\n            throw new IllegalArgumentException(\n                    \"containerName: \" + containerName + \" is not exists, you need to create them by yourself\");\n        }\n\n        log.info(\"containerName: {} has been found.\", containerName);\n\n        return blobContainerClient;\n    }\n\n    @Override\n    public void close() throws IOException {\n        // no need to close blobContainerClient\n    }","sourceCodeStart":55,"sourceCodeEnd":91,"githubUrl":"https://github.com/apache/dolphinscheduler/blob/02eac45a1b6676e639fcbfb4be2243de5771b05d/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/log/remote/AbsRemoteLogHandler.java#L55-L91","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","solutions":["Set remote.logging.abs.container.name to an existing Azure Blob container name in the remote logging configuration.","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.","Create the container in the Azure storage account beforehand, since the handler expects it to exist (see the follow-up not-exists error)."],"exampleFix":"// before\nremote.logging.abs.container.name=\n\n// after\nremote.logging.abs.container.name=dolphinscheduler-remote-logs","handlingStrategy":"validation","validationCode":"String container = config.getRemoteLoggingAbsContainerName();\nif (StringUtils.isBlank(container)) {\n    throw new IllegalArgumentException(\"remote.logging.abs.container.name must be set when remote logging is enabled\");\n}","typeGuard":null,"tryCatchPattern":"try {\n    new AbsRemoteLogHandler(config);\n} catch (IllegalArgumentException e) {\n    log.error(\"Azure remote logging misconfigured: {}\", e.getMessage());\n}","preventionTips":["Fill all remote.logging.abs.* properties whenever remote logging is enabled.","Add config sanity checks (all abs fields non-blank) at startup in test environments.","Keep container names consistent between environments via a config template checklist."],"tags":["azure","blob-storage","remote-logging","configuration"],"backgroundTag":"missing-required-config-field","analyzedSha":"02eac45a1b6676e639fcbfb4be2243de5771b05d","analyzedAt":"2026-09-06T17:43:00.555Z","contentChangedAt":"2026-09-06T17:43:00.555Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}