mirror of
https://github.com/minio/minio.git
synced 2024-12-24 22:25:54 -05:00
200caab82b
This was a regression introduced in '14bb969782' this has the potential to cause corruption when there are concurrent overwrites attempting to update the content on the namespace. This PR adds a situation where PutObject(), CopyObject() compete properly for the same locks with NewMultipartUpload() however it ends up turning off competing locks for the actual object with GetObject() and DeleteObject() - since they do not compete due to concurrent I/O on a versioned bucket it can lead to loss of versions. This PR fixes this bug with multi-pool setup with replication that causes corruption of inlined data due to lack of competing locks in a multi-pool setup. Instead CompleteMultipartUpload holds the necessary locks when finishing the transaction, knowing the exact location of an object to schedule the multipart upload doesn't need to compete in this manner, a pool id location for existing object. |
||
---|---|---|
.. | ||
auth | ||
bpool | ||
bucket | ||
color | ||
config | ||
crypto | ||
disk | ||
dsync | ||
etag | ||
event | ||
fips | ||
handlers | ||
hash | ||
http | ||
ioutil | ||
jwt | ||
kms | ||
lock | ||
logger | ||
lsync | ||
mountinfo | ||
pubsub | ||
rest | ||
s3select | ||
smart | ||
sync/errgroup |