[tahoe-lafs-trac-stream] [tahoe-lafs] #393: mutable: implement MDMF
tahoe-lafs
trac at tahoe-lafs.org
Wed Aug 17 08:31:57 PDT 2011
#393: mutable: implement MDMF
-------------------------+-------------------------------------------------
Reporter: warner | Owner: zooko
Type: | Status: new
enhancement | Milestone: 1.9.0
Priority: major | Version: 1.0.0
Component: code- | Keywords: newcaps performance random-access
mutable | privacy gsoc mdmf mutable backward-
Resolution: | compatibility forward-compatibility review-
Launchpad Bug: | needed
-------------------------+-------------------------------------------------
Comment (by kevan):
Replying to [comment:134 davidsarah]:
> I'm reviewing [http://tahoe-lafs.org/trac/tahoe-
lafs/changeset/5125/ticket393-MDMF-2?contextall=1 changeset 5125]. It's a
very substantial rewrite of the original code, which feels risky -- can
you explain why this much of a rewrite was needed to support multiple
segments? The new code is used for both SDMF and MDMF, which means there
is a significant risk of regressions in SDMF support.
The short answer is that it probably isn't necessary to support multiple
segments (and that I agree with you about the riskiness of a rewrite).
When I wrote the publisher, part of the goal of MDMF was to publish MDMF
files segment-by-segment (that is, to write the encrypted+encoded blocks
to the grid as they are produced on the client), as immutable files are
published. The patch attached to comment:39 contains a publisher that
handles this sort of publishing, which is heavier on deferreds/callbacks
and coordination logic than the current mutable publisher. I can't speak
precisely to my reasoning at the time I wrote that; probably I felt that
there wasn't a good/clean/maintainable way to add that sort of
coordination logic to the current uploader without a substantial rewrite
(maybe that was hasty; I recall exploring smaller, less invasive changes
before the rewrite and not liking them for various reasons, but it's
possible that I missed something simple). Anyway, comment:38 describes an
issue with segment-by-segment publishing for mutable files, and is
ultimately why we don't publish segment-by-segment now. I guess at that
point I felt that it was easier to tweak the revised publisher to work
with the relatively minor {{{layout.py}}} changes induced by comment:38
than to go back to the drawing board and re-evaluate the existing publish
code in the context of the modified publishing semantics (a significant
oversight, in retrospect, since so many of the publisher changes were due
to the segment-by-segment publishing semantics).
I can take another look at the existing publisher to see if it can be made
to handle MDMF with fewer/smaller changes. I can't say how long that would
take (or whether I'd be done by the 09/01/2011 deadline for 1.9). It does
seem like a good idea, though.
> Also, it seems like there's a lot of near-duplicated code between the
update and publish methods of the Publish class (update is new).
Yes, that setup logic seems like a good target for refactoring.
--
Ticket URL: <http://tahoe-lafs.org/trac/tahoe-lafs/ticket/393#comment:135>
tahoe-lafs <http://tahoe-lafs.org>
secure decentralized storage
More information about the tahoe-lafs-trac-stream
mailing list