#667 closed defect

KeyError in mutable download — at Version 9

Reported by: warner Owned by:
Priority: major Milestone: soon
Component: code-mutable Version: 1.3.0
Keywords: mutable download reliability availability Cc:
Launchpad Bug:

Description (last modified by davidsarah)

Zooko observed a KeyError exception raised during mutable-file retrieval, in #651 (specifically at git/src/allmydata/mutable/retrieve.py?rev=4061258c#L157). This is a bug in the retrieval code, probably triggered by running out of valid shares. Either the self.remaining_sharemap mapping should not be modified while download() is iterating over it, or more likely download() must be prepared for remaining_sharemap to change during the iteration.

Change History (9)

comment:1 Changed at 2009-12-30T01:45:33Z by davidsarah

  • Keywords download availability added

comment:2 Changed at 2009-12-30T01:46:00Z by davidsarah

  • Summary changed from KeyError in mutable publish to KeyError in mutable download

comment:3 Changed at 2010-01-26T16:56:11Z by zooko

  • Milestone changed from 1.6.0 to eventually

comment:4 Changed at 2010-05-27T22:10:26Z by zooko

  • Milestone changed from eventually to 1.8.0

It's really bothering me that mutable file upload and download behavior is so finicky, buggy, inefficient, hard to understand, different from immutable file upload and download behavior, etc. So I'm putting a bunch of tickets into the "1.8" Milestone. I am not, however, at this time, volunteering to work on these tickets, so it might be a mistake to put them into the 1.8 Milestone, but I really hope that someone else will volunteer or that I will decide to do it myself. :-)

comment:5 Changed at 2010-08-10T04:14:17Z by davidsarah

  • Keywords mutable reliability added
  • Milestone changed from 1.8.0 to 1.9.0

comment:6 Changed at 2010-08-10T04:40:29Z by zooko

If you like this ticket, you're probably the kind of weirdo who would like #474 (uncaught exception in mutable-retrieve: UCW between mapupdate and retrieve), #548 (mutable publish sends queries to servers that have already been asked), #540 (inappropriate "uncoordinated write error" after handling a server failure), #546 (mutable-file surprise shares raise inappropriate UCWE), #547 (mapupdate(MODE_WRITE) triggers on a false boundary), #548 (mutable publish sends queries to servers that have already been asked), #549 (MODE_WRITE mapupdate: maybe increase epsilon to handle large batches of new servers better). And we need more weirdos like you!

comment:7 Changed at 2011-07-23T20:31:03Z by davidsarah

  • Milestone changed from 1.9.0 to soon

This seems unlikely to be fixed for 1.9.

comment:8 follow-up: Changed at 2012-12-06T22:15:31Z by davidsarah

The description of this ticket probably refers to the code as it was before the start of Kevan's MDMF patches, i.e. up to and including darcs revision 4772 / git revision 4061258c. The code changes a lot for MDMF and this bug might have been incidentally fixed -- in particular, there is no longer any indexing into self.remaining_sharemap, and all of the loops over its keys are done synchronously with the keys having been copied beforehand.

If that's correct, this ticket can be closed as "cannot reproduce".

(There was a vaguely similar bug in git/src/allmydata/mutable/publish.py that is easy to confuse with this one, but that was fixed in #1749.)

comment:9 in reply to: ↑ 8 Changed at 2012-12-06T22:19:23Z by davidsarah

  • Description modified (diff)

Editing description to refer to the right revision.

Note: See TracTickets for help on using tickets.