[tahoe-lafs-trac-stream] [tahoe-lafs] #1669: ValueError (need more than 8 values to unpack) during mutable MDMF repair
tahoe-lafs
trac at tahoe-lafs.org
Tue Jun 19 03:48:39 UTC 2012
#1669: ValueError (need more than 8 values to unpack) during mutable MDMF repair
-------------------------+-------------------------------------------------
Reporter: vikarti | Owner: nobody
Type: defect | Status: new
Priority: | Milestone: 1.9.2
critical | Version: 1.9.1
Component: code- | Keywords: mutable mdmf repair error
mutable | regression preservation
Resolution: |
Launchpad Bug: |
-------------------------+-------------------------------------------------
Changes (by zooko):
* owner: zooko => nobody
* status: assigned => new
Comment:
Okay since I wrote comment:12 I patched pristine 1.9.1 to raise an
instance of a newly defined exception class instead of to execute
{{{d2.addErrback}}}. I expected that this would not change unit test
behavior since I believed that {{{d2.addErrback}}} would never do anything
but raise an exception (!AttributeError). However, instead I got a lot of
test failures/errors.
So I commented out the "raise exception" and wrote a {{{log.msg(…)}}}
debugprint. That shows that {{{d2}}} is in fact a Deferred. I don't see
how:
{{{
_trial_temp/test.log:2012-06-19 00:37:17-0300 [-] xxx testing testing 1 2
3 d2: <Deferred at 0x4719518 current result: (1,
'\x08\x92\xa5\x90%\xfbCI0$\xbf8$\x9d[s\x92!\xab1\xfea\xc6aM\x8e\x0ch~\x92r\x03',
'\xf4\xce\x8a}G\x94\x87:U\xf0\xf2\xaa\x9e\xa1\x86\xcc', 9, 8, 3, 10,
'\x00\x00\x00\x00\x00\x00\x00\x00\x01\x08\x92\xa5\x90%\xfbCI0$\xbf8$\x9d[s\x92!\xab1\xfea\xc6aM\x8e\x0ch~\x92r\x03\xf4\xce\x8a}G\x94\x87:
}}}
Oh, okay, I see that !MDMFSlotReadProxy does return a deferred tuple,
where the other two implementations of {{{get_verinfo}}} in
mutable/layout.py return an immediate tuple... I guess that one is the
only one that is getting invoked in that {{{_got_results}}}? ...
Also, I'll attach the patch that adds type-checking.
So, basically I'm pretty sure I see at least one or two serious bugs. 1.
different shape of tuple passed around as a "verinfo" from
!MDMFSlotWriteProxy than from !SDMFSlotWriteProxy or !MDMFSlotReadProxy,
and 2. {{{d2 = reader.get_verinfo(); d2.addErrback(…)}}}. However, I don't
understand how the latter isn't already showing up as unit test failures
and common failures of mutable file operations. And, I don't understand
the full scope of these two -- under what conditions they strike and what
their consequences are.
Unsetting my ownership of this ticket since I'm going to bed and I no
longer mind if you snatch it out from under me. :-)
--
Ticket URL: <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1669#comment:13>
tahoe-lafs <https://tahoe-lafs.org>
secure decentralized storage
More information about the tahoe-lafs-trac-stream
mailing list