checker: don't let failures in add-lease affect checker results. Closes #875.
authorBrian Warner <warner@lothar.com>
Tue, 29 Dec 2009 23:01:08 +0000 (15:01 -0800)
committerBrian Warner <warner@lothar.com>
Tue, 29 Dec 2009 23:01:08 +0000 (15:01 -0800)
commit794e32738fc654ae9835b9fd78f511671e1a12bc
treed9bc6f8dcce1fa677608f053ce20b2d913505b20
parenta50fdca6ab88e6b09f563559573b48248adf642d
checker: don't let failures in add-lease affect checker results. Closes #875.

Mutable servermap updates and the immutable checker, when run with
add_lease=True, send both the do-you-have-block and add-lease commands in
parallel, to avoid an extra round trip time. Many older servers have problems
with add-lease and raise various exceptions, which don't generally matter.
The client-side code was catching+ignoring some of them, but unrecognized
exceptions were passed through to the DYHB code, concealing the DYHB results
from the checker, making it think the server had no shares.

The fix is to separate the code paths. Both commands are sent at the same
time, but the errback path from add-lease is handled separately. Known
exceptions are ignored, the others (both unknown-remote and all-local) are
logged (log.WEIRD, which will trigger an Incident), but neither will affect
the DYHB results.

The add-lease message is sent first, and we know that the server handles them
synchronously. So when the checker is done, we can be sure that all the
add-lease messages have been retired. This makes life easier for unit tests.
src/allmydata/immutable/checker.py
src/allmydata/mutable/servermap.py
src/allmydata/test/test_checker.py