rackerlabs/silverberg — pull request #24 by dreid (2013-08-01 20:50:00+00:00)
Title: _read_lock sometimes has no responses.

This is possibly because between the write and the read the TTL may have expired, it could also be a general consistency issue.

This change causes `_verify_lock` to raise a `NoLockClaimsError` and for `acquire` to retry on said error.

`_verify_lock` first releases it's claim because if this is caused by a consistency problem we can't guarantee that the row won't then exist on the later read. It should be safe to always DELETE even if no valid claim exists.