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