apache/dolphinscheduler · critical · IllegalArgumentException

resource.alibaba.cloud.oss.bucket.name is empty

Error message

resource.alibaba.cloud.oss.bucket.name is empty

What it means

OssStorageOperator.ensureBucketSuccessfullyCreated throws IllegalArgumentException when the configured OSS bucket name is blank. It runs during operator init, so the storage plugin fails to start before any OSS call.

Source

Thrown at dolphinscheduler-storage-plugin/dolphinscheduler-storage-oss/src/main/java/org/apache/dolphinscheduler/plugin/storage/oss/OssStorageOperator.java:291

                    foldersToFetch.add(temp.getFullName());
                }
            }
            storageEntityList.addAll(tempList);
        }

        return storageEntityList;
    }

    @Override
    public StorageEntity getStorageEntity(String resourceAbsolutePath) {
        resourceAbsolutePath = transformAbsolutePathToOssKey(resourceAbsolutePath);
        OSSObject object = ossClient.getObject(new GetObjectRequest(bucketName, resourceAbsolutePath));
        return transformOSSObjectToStorageEntity(object);
    }

    private void ensureBucketSuccessfullyCreated(String bucketName) {
        if (StringUtils.isBlank(bucketName)) {
            throw new IllegalArgumentException("resource.alibaba.cloud.oss.bucket.name is empty");
        }

        boolean existsBucket = ossClient.doesBucketExist(bucketName);
        if (!existsBucket) {
            throw new IllegalArgumentException(
                    "bucketName: " + bucketName + " is not exists, you need to create them by yourself");
        }

        log.info("bucketName: {} has been found, the current regionName is {}", bucketName, region);
    }
    protected StorageEntity transformOSSObjectToStorageEntity(OSSObject ossObject) {
        ResourceMetadata resourceMetaData = getResourceMetaData(ossObject.getKey());

        StorageEntity storageEntity = new StorageEntity();
        storageEntity.setFileName(new File(ossObject.getKey()).getName());
        storageEntity.setFullName(ossObject.getKey());
        storageEntity.setPfullName(resourceMetaData.getResourceParentAbsolutePath());
        storageEntity.setType(resourceMetaData.getResourceType());

View on GitHub (pinned to 02eac45a1b)

Solutions

  1. Set resource.alibaba.cloud.oss.bucket.name to a non-blank bucket name
  2. Verify the storage plugin configuration file is being loaded at startup
  3. Check that env-based substitution resolves before the operator is constructed

Example fix

// before
resource.alibaba.cloud.oss.bucket.name=
// after
resource.alibaba.cloud.oss.bucket.name=my-oss-bucket
Defensive patterns

Strategy: validation

Validate before calling

String bucket = config.get("resource.alibaba.cloud.oss.bucket.name");
if (bucket == null || bucket.isBlank()) {
    throw new IllegalStateException("resource.alibaba.cloud.oss.bucket.name must be configured");
}

Try / catch

try {
    storageOperator = new OssStorageOperator(cfg);
} catch (IllegalArgumentException e) {
    log.error("OSS storage misconfigured: {}", e.getMessage());
    throw e;
}

Prevention

When it happens

Trigger: Initializing OssStorageOperator with resource.alibaba.cloud.oss.bucket.name missing or empty in the storage configuration.

Common situations: Forgot to fill in the bucket name after copying a config template; wrong property key spelled in common.properties; env var not set on the server where DolphinScheduler runs.

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/cee07d431e91e02b. Report an issue: GitHub.