ivandika3 commented on PR #5072:
URL: https://github.com/apache/ozone/pull/5072#issuecomment-1657375884
To provide more information, there are two types of MPU keys (OmKeyInfo)
that will be stored in OpenKeyTable, identified with two different OM DB keys:
1. Open MPU Key Info (dbKey = /{vol}/{bucket}/{key}/{uploadId})
- from OMMetadataManagerImpl#getMultipartKey
- uploadId is generated using `UUID.randomUUID().toString() + "-" +
UniqueId.next()` (generated in S3 InitiateMultipartUploadRequest)
- It only contains a single OMKeyLocationInfoGroup with empty
List<OmKeyLocationInfo>
- It means that it does not contain any blocks location
- It seems to be placed as a marker to see whether the particular MPU
key has been committed.
- This key is inserted to openKeyTable when MPU is initialized in
S3InitiateMultipartUpload(Request/Response)
- This key will be deleted from openKeyTable when MPU is complete in
S3MultipartUploadComplete(Request/Response)
2. Open MPU Part Key Info (dbKey = /{vol}/{bucket}/{key}/{clientId})
- from OMMetadataManagerImpl#getOpenKey
- for every MPU Part Key, clientId is generated using UniqueId#next
(generated in OMKeyCreateRequest) that's globally unique
- It also contains a single OMKeyLocationInfoGroup with empty
List<OmKeyLocationInfo>
- MPU part key does not allocate block in OMKeyCreateRequest, unlike
normal key
- This block information will only be updated in
S3MultipartUploadCommitPart(Request/Response) and persisted in
multipartInfoTable
-Actual MPU part key block information is only stored
multipartInfoTable, not in openKeyTable
- It seems, similar to Open MPU key info, it's used as a marker to see
whether the particular MPU part key has been committed.
- This key is inserted to openKeyTable when MPU part key is opened in
OMKeyCreate(Request/Response)
- In S3G it's called in RpcClient#createMultipartKey ->
RpcClient#newMultipartKey (with isMultipartKey flag set to true)
- This key will be deleted from openKeyTable when MPU part is
commited in S3MultipartUploadCommitPart(Request/Response)
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]