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

ASF GitHub Bot updated HDDS-16311:
----------------------------------
    Labels: pull-request-available  (was: )

> Avoid the O(n^2) part-number lookup in S3 multipart complete
> ------------------------------------------------------------
>
>                 Key: HDDS-16311
>                 URL: https://issues.apache.org/jira/browse/HDDS-16311
>             Project: Apache Ozone
>          Issue Type: Improvement
>            Reporter: Huang Kuan Hao
>            Assignee: Huang Kuan Hao
>            Priority: Major
>              Labels: pull-request-available
>
> S3MultipartUploadCompleteRequest collects the requested part numbers into an 
> ArrayList, then for every uploaded part calls partNumbers.contains(...) to 
> find the unused parts. S3 allows up to 10000 parts, so this is O(n*m) with 
> autoboxing, and it runs while the bucket write lock is held.
> Current:
>   List<Integer> partNumbers = new ArrayList<>();
>   ...
>   for (PartKeyInfo partKeyInfo : partKeyInfoMap) {
>     if (!partNumbers.contains(partKeyInfo.getPartNumber())) {
> partNumbers is only used for add/contains, and the strict-increasing order is 
> validated independently in getPartsListSize, so switching to a HashSet is 
> safe. Fix: use Set<Integer>/HashSet (and the matching parameter type). 
> Behavior unchanged.



--
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