Avoid calling sync for a job where suffixes list is empty
Bug #1886782 reported by
Bhaskar Singhal
This bug affects 1 person
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
OpenStack Object Storage (swift) |
Fix Released
|
Undecided
|
Unassigned |
Bug Description
In swift/obj/
While replicating a partition, sometimes we end up calling sync[1] with an empty suffixes list. This causes the replication for that partition to fail[2], even though it shouldn't even replicate.
We should check for suffixes list being empty, just like we do at [3].
Also, if sync[1] fails, do we still want to send REPLICATE to remote?
[1] https:/
[2] https:/
[3] https:/
To post a comment you must log in.
Sounds a lot like https:/ /bugs.launchpad .net/swift/ +bug/1862645; do you think they might be the same issue?
The last time I looked at that bug, I was having a hard time reproducing the issue -- I guess it's a concurrency bug, where we aren't tolerant of a write coming in between the _get_hashes() at the start of the function [1] and the one after receiving a REPLICATE response [2]?
I think the REPLICATE- after-failed- sync is fine -- we didn't get *everything* synced like we wanted, but we may have moved *something*. We need to tell the remote those suffixes are dirty, or they'll have the wrong hash cached in their hashes.pkl, right?
[1] https:/ /github. com/openstack/ swift/blob/ 2.25.0/ swift/obj/ replicator. py#L627- L632 /github. com/openstack/ swift/blob/ 2.25.0/ swift/obj/ replicator. py#L681- L684
[2] https:/