[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