relinker reports ENOENT when data file is overwritten by tombstone
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
OpenStack Object Storage (swift) |
Fix Committed
|
Undecided
|
Alistair Coles |
Bug Description
There's a race in the relinker where a client DELETE can get serviced between when we do the listdir (to determine what needs to be relinked) and when we actually do the relinking. When that happens, the relinker reports:
Relinking /srv/node/
But checking the objects tree shows there's no problem:
ls -ld /srv/node/
-rwxr-xr-x. 2 swift swift 0 Mar 3 00:07 /srv/node/
Naturally, the object-server also took care of linking it into the new partition as well as the old:
ls -ld /srv/node/
-rwxr-xr-x. 2 swift swift 0 Mar 3 00:07 /srv/node/
Much better would be for us to do a second listdir before reporting the error, and skip reporting it if there was a newer write.
https:/ /review. opendev. org/c/openstack /swift/ +/779308