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