From fca4ee84c9d9a1e5b615d4fe02a7e4d0765dfad6 Mon Sep 17 00:00:00 2001 From: Harshavardhana Date: Thu, 16 Jan 2020 17:11:25 -0800 Subject: [PATCH] gw/hdfs: listing should list directories properly (#8827) Fixes #8822 --- cmd/gateway/hdfs/gateway-hdfs.go | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/cmd/gateway/hdfs/gateway-hdfs.go b/cmd/gateway/hdfs/gateway-hdfs.go index 3bd6bf235..b95558b74 100644 --- a/cmd/gateway/hdfs/gateway-hdfs.go +++ b/cmd/gateway/hdfs/gateway-hdfs.go @@ -355,8 +355,23 @@ func (n *hdfsObjects) listDirFactory() minio.ListDirFunc { // ListObjects lists all blobs in HDFS bucket filtered by prefix. func (n *hdfsObjects) ListObjects(ctx context.Context, bucket, prefix, marker, delimiter string, maxKeys int) (loi minio.ListObjectsInfo, err error) { + if _, err := n.clnt.Stat(minio.PathJoin(hdfsSeparator, bucket)); err != nil { + return loi, hdfsToObjectErr(ctx, err, bucket) + } + getObjectInfo := func(ctx context.Context, bucket, entry string) (minio.ObjectInfo, error) { - return n.GetObjectInfo(ctx, bucket, entry, minio.ObjectOptions{}) + fi, err := n.clnt.Stat(minio.PathJoin(hdfsSeparator, bucket, entry)) + if err != nil { + return minio.ObjectInfo{}, hdfsToObjectErr(ctx, err, bucket, entry) + } + return minio.ObjectInfo{ + Bucket: bucket, + Name: entry, + ModTime: fi.ModTime(), + Size: fi.Size(), + IsDir: fi.IsDir(), + AccTime: fi.(*hdfs.FileInfo).AccessTime(), + }, nil } return minio.ListObjects(ctx, n, bucket, prefix, marker, delimiter, maxKeys, n.listPool, n.listDirFactory(), getObjectInfo, getObjectInfo)