relinking from next part power partition fails to makedir during PUT
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
OpenStack Object Storage (swift) |
Fix Committed
|
Undecided
|
Alistair Coles |
Bug Description
This exception was seen during a partition power increase:
object-server: err Relinking <path> to <path> failed: [Errno 17] File exists: '<path>':
Traceback (most recent call last):
File "/opt/ss/
relink_
File "/opt/ss/
os.
File "/opt/ss/
mkdir(name, mode)
OSError: [Errno 17] File exists: '<path>'
It would appear that there were two concurrent PUTs to the same path during the relinking phase of a partition power increase. Both attempt to create the object dir in the new (next partition power) dir but one fails when the dir already exists: the 'look before you leap' check before os.makedirs in diskfile.
If the relinker has already processed (relinked) the old partition, then the failure to create the link from the next part power dir can result in object data that is not relinked to the next part power.
Changed in swift: | |
status: | In Progress → Fix Committed |
https:/ /review. opendev. org/c/openstack /swift/ +/778474