[tahoe-lafs-trac-stream] [tahoe-lafs] #393: mutable: implement MDMF
tahoe-lafs
trac at tahoe-lafs.org
Mon Feb 21 14:03:34 PST 2011
#393: mutable: implement MDMF
------------------------------+---------------------------------------------
Reporter: warner | Owner: kevan
Type: enhancement | Status: assigned
Priority: major | Milestone: 1.9.0
Component: code-mutable | Version: 1.0.0
Resolution: | Keywords: newcaps performance random-access privacy gsoc mdmf mutable backward-compatibility forward-compatibility review-needed
Launchpad Bug: |
------------------------------+---------------------------------------------
Comment (by warner):
Another issue: in {{{MutableFileVersion._modify_once}}}, the old code
repeated the servermap update step at the beginning of each loop, whereas
the new code appears to rely upon a mapupdate being done earlier (and
doesn't repeat it). The original reason for re-updating was to handle the
UCWE-triggered retry case: if we're racing with somebody else to modify
the file, and detected contention, then we need to update our servermap to
properly update on top of what somebody else finished writing. If we don't
update our servermap, we'll be using a stale one, and we'll probably keep
hitting UCWE forever (or until the retry counter hits the limit).
There might be some other way your code deals with this that I'm not
seeing, though.. for example, in some sense, if we observe UCWE, then we
should really create a new {{{MutableFileVersion}}} instance for the new
state of the file, and then delegate to {{{.modify}}} on it. Except we
need to impose the retry limit (maybe add a {{{retries_permitted=}}}
argument to {{{.modify}}}, and when we delegate, we pass in a value that's
one lower than the one we were given? limited recursion?).
--
Ticket URL: <http://tahoe-lafs.org/trac/tahoe-lafs/ticket/393#comment:71>
tahoe-lafs <http://tahoe-lafs.org>
secure decentralized storage
More information about the tahoe-lafs-trac-stream
mailing list