From 8f42936d5c9ebb1d1538c591ec406ffad7d2713d Mon Sep 17 00:00:00 2001 From: Sadanand Shenoy Date: Wed, 3 Jan 2024 14:12:33 +0530 Subject: [PATCH] HDDS-9927. Ozone List keys CLI should co-ordinate between max limit and listCacheSize. --- .../java/org/apache/hadoop/ozone/client/OzoneBucket.java | 8 ++++++++ .../apache/hadoop/ozone/shell/keys/ListKeyHandler.java | 5 ++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/hadoop-ozone/client/src/main/java/org/apache/hadoop/ozone/client/OzoneBucket.java b/hadoop-ozone/client/src/main/java/org/apache/hadoop/ozone/client/OzoneBucket.java index cd5b1804721..441d9143b59 100644 --- a/hadoop-ozone/client/src/main/java/org/apache/hadoop/ozone/client/OzoneBucket.java +++ b/hadoop-ozone/client/src/main/java/org/apache/hadoop/ozone/client/OzoneBucket.java @@ -301,6 +301,10 @@ public String getOwner() { return owner; } + public int getListCacheSize() { + return listCacheSize; + } + /** * Builder for OmBucketInfo. /** @@ -405,6 +409,10 @@ public void setReplicationConfig(ReplicationConfig replicationConfig) proxy.setReplicationConfig(volumeName, name, replicationConfig); } + public void setListCacheSize(int listCacheSize) { + this.listCacheSize = listCacheSize; + } + /** * Creates a new key in the bucket, with default replication type RATIS and * with replication factor THREE. diff --git a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/shell/keys/ListKeyHandler.java b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/shell/keys/ListKeyHandler.java index b40873108db..00652b58a95 100644 --- a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/shell/keys/ListKeyHandler.java +++ b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/shell/keys/ListKeyHandler.java @@ -77,10 +77,13 @@ private void listKeysInsideBucket(OzoneClient client, OzoneAddress address) OzoneVolume vol = client.getObjectStore().getVolume(volumeName); OzoneBucket bucket = vol.getBucket(bucketName); + int maxKeyLimit = listOptions.getLimit(); + if (maxKeyLimit < bucket.getListCacheSize()) { + bucket.setListCacheSize(maxKeyLimit); + } Iterator keyIterator = bucket.listKeys( keyPrefix, listOptions.getStartItem()); - int maxKeyLimit = listOptions.getLimit(); int counter = printAsJsonArray(keyIterator, maxKeyLimit); // More keys were returned notify about max length