You are viewing a plain text version of this content. The canonical link for it is here.
Posted to hdfs-issues@hadoop.apache.org by "Nanda kumar (JIRA)" <ji...@apache.org> on 2019/03/18 19:31:00 UTC

[jira] [Issue Comment Deleted] (HDDS-1302) Fix SCM CLI does not list container with id 1

     [ https://issues.apache.org/jira/browse/HDDS-1302?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Nanda kumar updated HDDS-1302:
------------------------------
    Comment: was deleted

(was: All the list calls (like list directories, files) in OzoneFS depends on list key call of OzoneClient. 
OzoneClient internally uses {{OzoneBucket#KeyIterator}} to iterate over the list of keys in a bucket. This iterator has an internal cache whose size can be configured using {{ozone.client.list.cache}} (default value is 1000). So after every 1000 keys, we make a new RPC call to OM to get the next set of keys (Iterator's internal logic).

Below is the call which the iterator uses:
{code:java|title=ClientProtocol.java}
  /**
   * Returns list of Keys in {Volume/Bucket} that matches the keyPrefix,
   * size of the returned list depends on maxListResult. The caller has
   * to make multiple calls to read all keys.
   * @param volumeName Name of the Volume
   * @param bucketName Name of the Bucket
   * @param keyPrefix Bucket prefix to match
   * @param prevKey Starting point of the list, this key is excluded
   * @param maxListResult Max number of buckets to return.
   * @return {@code List<OzoneKey>}
   * @throws IOException
   */
  List<OzoneKey> listKeys(String volumeName, String bucketName,
                          String keyPrefix, String prevKey, int maxListResult)
      throws IOException;
{code}
As mentioned, the {{prevKey}} should be excluded in the result returned by OM, else the iterator will get a duplicate value at the end of every 1000 key or the value configured in {{ozone.client.list.cache}}.
 * So if we do a list file operation on a directory which has more than 1000 (default value) files/directories, we will get some duplicates in the result.
 * If we count the number of files in a directory, the result will be incorrect.

Note: Don't get confused by the name {{startId}} in OM code and {{prevKey}} in client code, they are one and the same.)

> Fix SCM CLI does not list container with id 1
> ---------------------------------------------
>
>                 Key: HDDS-1302
>                 URL: https://issues.apache.org/jira/browse/HDDS-1302
>             Project: Hadoop Distributed Data Store
>          Issue Type: Bug
>            Reporter: Bharat Viswanadham
>            Assignee: Vivek Ratnavel Subramanian
>            Priority: Minor
>
> In HDDS-1263 it is changed to handle the list containers with containerID 1 by changing the actual logic of listContainers in ScmContainerManager.java. But now with this change, it is contradicting with the javadoc.
> From [~nandakumar131] comments
> https://issues.apache.org/jira/browse/HDDS-1263?focusedCommentId=16794865&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-16794865
>  
> I agree this will be the way to fix it.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: hdfs-issues-unsubscribe@hadoop.apache.org
For additional commands, e-mail: hdfs-issues-help@hadoop.apache.org