Summary
When configuring Dremio with Dell ECS Storage as an S3 source, users may encounter a "bucket is null/empty" error that prevents browsing the source, even when buckets contain data. This issue occurs when Dell ECS Storage bucket names contain special characters, particularly underscores (_), which are not fully supported in Dremio's S3 integration.
Reported Issue
When attempting to add an S3 source in Dremio against a Dell ECS Storage bucket with the relevant credentials, this connects successfully and the source is added. However when trying to browse the source the following "bucket is null/empty" error is seen in the UI.
Using any third-party tools including the Dell ECS S3 Browser shows that the bucket contains data and is fully accessible using the same credentials used for connecting to the source on the Dremio UI side.
Relevant Versions
This issue applies to Dremio versions 25.x and on wards.
Troubleshooting Steps
1. Navigate to the coordinator server log.
2. Confirm the following error can be seen in the server.log where "data_products" in the below example is the bucket name under the dremio created s3 source (my-s3).
2026-01-06 15:49:58,166 [16a2d0d8-a122-cde8-9d18-0e9098c55300/0:foreman-planning] ERROR c.d.e.o.IcebergAsyncMetadataRefreshHandler - Unable to prefetch dataset my-s3.data_products
java.lang.IllegalArgumentException: bucket is null/empty
at org.apache.hadoop.thirdparty.com.google.common.base.Preconditions.checkArgument(Preconditions.java:144)
at org.apache.hadoop.fs.s3a.S3AUtils.propagateBucketOptions(S3AUtils.java:1155)
at org.apache.hadoop.fs.s3a.S3AFileSystem.initialize(S3AFileSystem.java:483)
at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:3611)
at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:554)
at com.dremio.exec.store.dfs.DremioFileSystemCache.get(DremioFileSystemCache.java:73)
at com.dremio.plugins.s3.store.S3FileSystem$BucketCreator$1.create(S3FileSystem.java:595)
at com.dremio.plugins.util.ContainerFileSystem$FileSystemSupplier.get(ContainerFileSystem.java:256)
at com.dremio.plugins.util.ContainerFileSystem$ContainerHolder.fs(ContainerFileSystem.java:216)
at com.dremio.plugins.util.ContainerFileSystem.getFileStatus(ContainerFileSystem.java:553)
at org.apache.hadoop.fs.FileSystem.exists(FileSystem.java:1862)
at com.dremio.plugins.util.ContainerFileSystem.exists(ContainerFileSystem.java:541)
at com.dremio.exec.hadoop.HadoopFileSystem.exists(HadoopFileSystem.java:419)
at com.dremio.io.file.FilterFileSystem.exists(FilterFileSystem.java:150)
at com.dremio.exec.store.dfs.LoggedFileSystem.exists(LoggedFileSystem.java:191)
at com.dremio.exec.store.dfs.FileSelection.createNotExpanded(FileSelection.java:222)
at com.dremio.exec.store.dfs.FileSelection.createNotExpanded(FileSelection.java:214)
at com.dremio.exec.store.dfs.FileSystemPlugin.generateFileSelectionForPathComponents(FileSystemPlugin.java:2320)
at com.dremio.exec.store.dfs.FileSystemPlugin.getDatasetHandleForNewRefresh(FileSystemPlugin.java:2290)
at com.dremio.exec.store.dfs.FileSystemPlugin.internalGetDatasetHandle(FileSystemPlugin.java:2111)
at com.dremio.exec.store.dfs.FileSystemPlugin.getDatasetHandle(FileSystemPlugin.java:2078)
at com.dremio.exec.catalog.ManagedStoragePlugin.getDatasetHandle(ManagedStoragePlugin.java:1428)
at com.dremio.exec.catalog.DatasetManager.getInvalidTableFromPlugin(DatasetManager.java:534)
at com.dremio.exec.catalog.DatasetManager.lambda$bulkGetTablesFromPlugin$13(DatasetManager.java:655)
at com.dremio.exec.store.dfs.MetadataIOPool$MetadataTask.getResult(MetadataIOPool.java:167)
at com.dremio.exec.store.dfs.MetadataIOPool$MetadataTaskRunnable.runTask(MetadataIOPool.java:212)
at io.opentelemetry.context.Context.lambda$wrap$1(Context.java:212)
at com.dremio.context.RequestContext.run(RequestContext.java:103)
at com.dremio.exec.store.dfs.MetadataIOPool$MetadataTaskRunnable.run(MetadataIOPool.java:201)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:829)4. Carry out the "Steps to Resolve" described below.
Cause
The issue is caused by unsupported special characters in Dell ECS Storage bucket names, specifically underscores (_). While Dell ECS Storage allows these characters in bucket names, Dremio's S3 source integration has stricter naming requirements.
Steps to Resolve
Rename or recreate Dell ECS Storage bucket without any special characters in the name i.e When creating Dell ECS Storage buckets intended for use with Dremio, ensure bucket names comply with standard S3 naming conventions to avoid integration issues.
Additional Resources
Creating an S3 Source in Dremio: https://docs.dremio.com/current/data-sources/object/s3/