exception when attempting obejct relink during part power increase

Bug #1917658 reported by Alistair Coles
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
OpenStack Object Storage (swift)
Fix Committed
Undecided
Alistair Coles

Bug Description

Exception seen during relinking phase of a partition power increase:

err Relinking <path> to <path> failed: [Errno 17] File exists:
 Traceback (most recent call last):
   File "/opt/ss/lib/python2.7/site-packages/swift/obj/diskfile.py", line 1845, in _finalize_put
     relink_paths(target_path, new_target_path)
   File "/opt/ss/lib/python2.7/site-packages/swift/obj/diskfile.py", line 474, in relink_paths
     os.link(target_path, new_target_path)
 OSError: [Errno 17] File exists

This could be due to the relinker relinking an object concurrent with the object being PUT, so that both the relinker and object server are concurrently attempting to create a link from the next part power dir to the old part power dir. The look-before-you-leap check in diskfile.relink_paths is insufficient to prevent the exception when the relink and PUT are concurrent.

Revision history for this message
Alistair Coles (alistair-coles) wrote :
Changed in swift:
assignee: nobody → Alistair Coles (alistair-coles)
status: New → In Progress
Changed in swift:
status: In Progress → Fix Committed
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix included in openstack/swift 2.27.0

This issue was fixed in the openstack/swift 2.27.0 release.

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.