[ 
https://issues.apache.org/jira/browse/HDDS-7715?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17771330#comment-17771330
 ] 

Tanvi Penumudy edited comment on HDDS-7715 at 10/3/23 4:38 AM:
---------------------------------------------------------------

Solution - PR [#5275|https://github.com/apache/ozone/pull/5275]: To introduce a 
newer listStatus API (we have chosen to introduce a newer API over modifying 
the existing API as it would break compatibility for older ozone clients) which 
uses a trimmed {{KeyInfo}} ({{{}BasicKeyInfo{}}}) proto message for excluding 
fields such as {{KeyLocations}} which are not very useful on the client side:

The new lightweight listStatus API would be used for:
 * {{o3}} CLI: ({{{}ozone sh key list{}}})
 * S3 ListObject requests

The existing listStatus API will continue being used for:
 * {{ofs}} commands

{code:java}
message BasicKeyInfo {
    optional string keyName = 1;
    optional uint64 dataSize = 2;
    optional uint64 creationTime = 3;
    optional uint64 modificationTime = 4;
    optional hadoop.hdds.ReplicationType type = 5;
    optional hadoop.hdds.ReplicationFactor factor = 6;
    optional hadoop.hdds.ECReplicationConfig ecReplicationConfig = 7;
}
{code}
 
This patch shall utilize the server-side Ozone key encapsulations and proto 
messages introduced as part of HDDS-9079. Implement a lightweight listKeys API 
(PR [#5115|https://github.com/apache/ozone/pull/5115]).


was (Author: JIRAUSER285056):
Solution - PR [#5275|https://github.com/apache/ozone/pull/5275]: To introduce a 
newer listStatus API (we have chosen to introduce a newer API over modifying 
the existing API as it would break compatibility for older ozone clients) which 
uses a trimmed {{KeyInfo}} {{BasicKeyInfo}} proto message for excluding fields 
such as {{KeyLocations}} which are not very useful on the client side:

The new lightweight listStatus API would be used for:
 * {{o3}} CLI: ({{ozone sh key list}})
 * S3 ListObject requests

The existing listStatus API will continue being used for:
 * {{ofs}} commands

{code:java}
message BasicKeyInfo {
    optional string keyName = 1;
    optional uint64 dataSize = 2;
    optional uint64 creationTime = 3;
    optional uint64 modificationTime = 4;
    optional hadoop.hdds.ReplicationType type = 5;
    optional hadoop.hdds.ReplicationFactor factor = 6;
    optional hadoop.hdds.ECReplicationConfig ecReplicationConfig = 7;
}
{code}
 
This patch shall utilize the server-side Ozone key encapsulations and proto 
messages introduced as part of HDDS-9079. Implement a lightweight listKeys API 
(PR [#5115|https://github.com/apache/ozone/pull/5115]).

> keyManagerImpl#listStatus exceeds the maximum RPC length
> --------------------------------------------------------
>
>                 Key: HDDS-7715
>                 URL: https://issues.apache.org/jira/browse/HDDS-7715
>             Project: Apache Ozone
>          Issue Type: Bug
>          Components: OM, Ozone Manager
>    Affects Versions: 1.3.0
>         Environment: Version: Our forked version based ozone-1.3.0 branch. 
> commit hash is 
> [https://github.com/apache/ozone/commit/9c61a8aa497ab96c014ad3bb7b1ee4f731ebfaf8]
> FSO-enabled bucket
>            Reporter: Kohei Sugihara
>            Assignee: Tanvi Penumudy
>            Priority: Major
>              Labels: ozone-performance, pull-request-available
>         Attachments: large-protos.png
>
>
> keyManagerImpl#listStatus for FSO buckets serves a KeyLocationList but might 
> be large size of response (> 100 MB) and exceed the limit. The problem is 
> KeyLocation field is large enough (> 1MB) so just listing some multi-part 
> uploaded keys exceeds the limit. A possible solution is to reduce KeyLocation 
> size by omitting pipeline fields.
> {quote}% ozone sh key ls /s3v/bucket --prefix=path/to/prefix
> RPC response exceeds maximum data length
> {quote}
>  
> We checked a List<OzoneFileStatus> in our environment and it turned out that 
> protobufs corresponding to some multi-part keys are larger than 1MB. AFAIK, 
> the maximum IPC length is -100MB- 128MB by default so it easily exceeds the 
> limit.
> !large-protos.png!



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to