Fix #6059
closedosd: block reads while repgather is writing across replicas
0%
Description
Currently we use the ondisk_write/read locks to do mutual exclusion over the local filestore which avoids reading data that is being modified. We also need to block reads while we are waiting for replcias to commit. Otherwise object state can appear to go back in time.
- start a write locally, and on remotes
- finish local write
- another op reads (new) locally written value
- all osds crash
- replica osds restart, but old primary does not
- they recover
- client reads prior object value
we do not see this in our testing because on failure/peering our clients resubmit their requests.
Updated by Ian Colle over 10 years ago
- Translation missing: en.field_story_points set to 8.00
Updated by Samuel Just over 10 years ago
Note, just extending the obc->write_lock() region doesn't really work since it can cause the op_tp to be blocked preventing the op_wq threads from processing the OSDSubOpReply message.
Updated by Sage Weil over 10 years ago
- Target version changed from v0.70 to v0.71
Updated by Samuel Just over 10 years ago
- Assignee changed from David Zafman to Samuel Just
Updated by Ian Colle over 10 years ago
- Status changed from In Progress to Fix Under Review
Updated by Sage Weil over 10 years ago
- Status changed from Fix Under Review to Resolved