DELETE operation not write affinity aware
Bug #1318375 reported by
Caleb Tennis
This bug affects 5 people
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
OpenStack Object Storage (swift) |
Fix Released
|
High
|
Matthew Oliver |
Bug Description
This was discussed previously in #1198926, though the fix applied there just masked the issue by adding a wait for replication to finalize before issuing a DELETE.
That bug dealt with a 2 replica cluster, but in the more common cases, 3 or 4 replicas, it's still an issue.
Examples:
In a 3 region 3 replica cluster, with write affinity enabled, a DELETE operation will return a 404 error because the nodes return (200, 404, 404).
In a 2 region cluster, with 4 replicas, with write affinity enabled, a DELETE operation will return a 503 because the nodes return (200, 200, 404, 404).
I don't know the best course of action here, just noting this as multiple folks have reported it to me.
Changed in swift: | |
importance: | Undecided → High |
Changed in swift: | |
assignee: | nobody → Matthew Oliver (matt-0) |
Changed in swift: | |
milestone: | none → 2.2.0-rc1 |
status: | Fix Committed → Fix Released |
Changed in swift: | |
milestone: | 2.2.0-rc1 → 2.2.0 |
To post a comment you must log in.
One fix might be for a 404 on object DELETE to be treated as successful the same way 2xx is. After all, the object server will write out a tombstone, and replication will eventually ensure that the object is deleted everywhere.
This would increase the chances of DELETE then GET still being able to read the object, but that can happen on master already (DELETE hits primaries, GET finds it on a handoff), so it's probably not a big deal.