Skip to content

Commit 2f91713

Browse files
authored
Optimized List objects v2 for metadata (#1175)
Signed-off-by: Daniel Valdivia <[email protected]>
1 parent dfd0d08 commit 2f91713

File tree

5 files changed

+28
-35
lines changed

5 files changed

+28
-35
lines changed

portal-ui/src/screens/Console/Buckets/ListBuckets/AddBucket.tsx

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
// You should have received a copy of the GNU Affero General Public License
1515
// along with this program. If not, see <http://www.gnu.org/licenses/>.
1616

17-
import React, { useEffect, useState, Fragment } from "react";
17+
import React, { Fragment, useEffect, useState } from "react";
1818
import Grid from "@mui/material/Grid";
1919
import {
2020
Button,
@@ -74,6 +74,9 @@ const styles = (theme: Theme) =>
7474
},
7575
error: {
7676
color: "#b53b4b",
77+
border: "1px solid #b53b4b",
78+
padding: 8,
79+
borderRadius: 3,
7780
},
7881
...modalBasic,
7982
});
@@ -298,10 +301,18 @@ const AddBucket = ({
298301
<br />
299302
{!distributedSetup && (
300303
<Fragment>
301-
<small className={classes.error}>
302-
Some these features are disabled as server is running in
303-
non-erasure coded mode.
304-
</small>
304+
<div className={classes.error}>
305+
These features are unavailable in a single-disk setup.
306+
<br />
307+
Please deploy a server in{" "}
308+
<a
309+
href="https://docs.min.io/minio/baremetal/installation/deploy-minio-distributed.html?ref=con"
310+
target="_blank"
311+
>
312+
Distributed Mode
313+
</a>{" "}
314+
to use these features.
315+
</div>
305316
<br />
306317
<br />
307318
</Fragment>

portal-ui/src/screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/ObjectDetails.tsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -254,7 +254,7 @@ const ObjectDetails = ({
254254
const [versions, setVersions] = useState<IFileInfo[]>([]);
255255
const [filterVersion, setFilterVersion] = useState<string>("");
256256
const [deleteOpen, setDeleteOpen] = useState<boolean>(false);
257-
const [metadataLoad, setMetadataLoad] = useState<boolean>(false);
257+
const [metadataLoad, setMetadataLoad] = useState<boolean>(true);
258258
const [metadata, setMetadata] = useState<any>({});
259259
const [selectedTab, setSelectedTab] = useState<number>(0);
260260

@@ -292,7 +292,6 @@ const ObjectDetails = ({
292292
}
293293

294294
setLoadObjectData(false);
295-
setMetadataLoad(true);
296295
})
297296
.catch((error: ErrorResponseHandler) => {
298297
setErrorSnackMessage(error);

restapi/user_bucket_quota.go

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -96,9 +96,6 @@ func setBucketQuota(ctx context.Context, ac *AdminClient, bucket *string, bucket
9696
}
9797

9898
func getBucketQuotaResponse(session *models.Principal, params user_api.GetBucketQuotaParams) (*models.BucketQuota, *models.Error) {
99-
if !isErasureBackend() {
100-
return &models.BucketQuota{}, nil
101-
}
10299

103100
mAdmin, err := NewMinioAdminClient(session)
104101
if err != nil {

restapi/user_buckets.go

Lines changed: 0 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,8 @@ import (
2222
"encoding/json"
2323
"fmt"
2424
"strings"
25-
"sync"
2625
"time"
2726

28-
"github.com/minio/madmin-go"
2927
"github.com/minio/mc/cmd"
3028
"github.com/minio/mc/pkg/probe"
3129
"github.com/minio/minio-go/v7"
@@ -202,10 +200,6 @@ func setBucketVersioningResponse(session *models.Principal, bucketName string, p
202200
}
203201

204202
func getBucketReplicationResponse(session *models.Principal, bucketName string) (*models.BucketReplicationResponse, error) {
205-
if !isErasureBackend() {
206-
return &models.BucketReplicationResponse{}, nil
207-
}
208-
209203
ctx, cancel := context.WithTimeout(context.Background(), time.Second*20)
210204
defer cancel()
211205

@@ -256,12 +250,6 @@ func getBucketReplicationResponse(session *models.Principal, bucketName string)
256250
}
257251

258252
func getBucketVersionedResponse(session *models.Principal, bucketName string) (*models.BucketVersioningResponse, error) {
259-
if !isErasureBackend() {
260-
return &models.BucketVersioningResponse{
261-
IsVersioned: false,
262-
}, nil
263-
}
264-
265253
ctx, cancel := context.WithTimeout(context.Background(), time.Second*20)
266254
defer cancel()
267255

@@ -288,24 +276,13 @@ func getBucketVersionedResponse(session *models.Principal, bucketName string) (*
288276
return bucketVResponse, nil
289277
}
290278

291-
var serverBackendType madmin.BackendType
292-
var serverBackendOnce sync.Once
293-
294-
func isErasureBackend() bool {
295-
return serverBackendType == madmin.Erasure
296-
}
297-
298279
// getAccountInfo fetches a list of all buckets allowed to that particular client from MinIO Servers
299280
func getAccountInfo(ctx context.Context, client MinioAdmin) ([]*models.Bucket, error) {
300281
info, err := client.AccountInfo(ctx)
301282
if err != nil {
302283
return []*models.Bucket{}, err
303284
}
304285

305-
serverBackendOnce.Do(func() {
306-
serverBackendType = info.Server.Type
307-
})
308-
309286
var bucketInfos []*models.Bucket
310287
for _, bucket := range info.Buckets {
311288

restapi/user_objects.go

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,7 @@ func getListObjectsResponse(session *models.Principal, params user_api.ListObjec
197197
if params.Recursive != nil {
198198
recursive = *params.Recursive
199199
}
200-
if isErasureBackend() && params.WithVersions != nil {
200+
if params.WithVersions != nil {
201201
withVersions = *params.WithVersions
202202
}
203203
if params.WithMetadata != nil {
@@ -230,7 +230,16 @@ func getListObjectsResponse(session *models.Principal, params user_api.ListObjec
230230
// listBucketObjects gets an array of objects in a bucket
231231
func listBucketObjects(ctx context.Context, client MinioClient, bucketName string, prefix string, recursive, withVersions bool, withMetadata bool) ([]*models.BucketObject, error) {
232232
var objects []*models.BucketObject
233-
for lsObj := range client.listObjects(ctx, bucketName, minio.ListObjectsOptions{Prefix: prefix, Recursive: recursive, WithVersions: withVersions, WithMetadata: withMetadata}) {
233+
opts := minio.ListObjectsOptions{
234+
Prefix: prefix,
235+
Recursive: recursive,
236+
WithVersions: withVersions,
237+
WithMetadata: withMetadata,
238+
}
239+
if withMetadata {
240+
opts.MaxKeys = 1
241+
}
242+
for lsObj := range client.listObjects(ctx, bucketName, opts) {
234243
if lsObj.Err != nil {
235244
return nil, lsObj.Err
236245
}

0 commit comments

Comments
 (0)