[tahoe-lafs-trac-stream] [Tahoe-LAFS] #812: server-side crawlers: tolerate corrupted shares, verify shares

Tahoe-LAFS trac at tahoe-lafs.org
Fri Nov 28 15:59:12 UTC 2014


#812: server-side crawlers: tolerate corrupted shares, verify shares
------------------------------+-------------------------
     Reporter:  zooko         |      Owner:  warner
         Type:  defect        |     Status:  new
     Priority:  major         |  Milestone:  undecided
    Component:  code-storage  |    Version:  1.4.1
   Resolution:                |   Keywords:  reliability
Launchpad Bug:                |
------------------------------+-------------------------

Comment (by zooko):

 My consulting client (codename "WAG") (see comment:6:ticket:1278) has
 corrupt shares. This message is in the storage server's twistd.log:

 {{{
 2014-10-16 20:28:32+0530 [-] lease-checker error processing /GFS2_tahoe
 /.tahoe-filestore1/storage/shares/jz/jze7ynr5mtrehxj7vchc3dqtpa/5
 2014-10-16 20:28:32+0530 [-] Unhandled Error
         Traceback (most recent call last):
           File "/data/allmydata-tahoe-1.10.0/support/lib/python2.6/site-
 packages/Twisted-13.0.0-py2.6-linux-x86_64.egg/twisted/internet/base.py",
 line 824, in runUntilCurrent
             call.func(*call.args, **call.kw)
           File "/data/allmydata-
 tahoe-1.10.0/src/allmydata/storage/crawler.py", line 261, in start_slice
             self.start_current_prefix(start_slice)
           File "/data/allmydata-
 tahoe-1.10.0/src/allmydata/storage/crawler.py", line 320, in
 start_current_prefix
             buckets, start_slice)
           File "/data/allmydata-
 tahoe-1.10.0/src/allmydata/storage/crawler.py", line 360, in
 process_prefixdir
             self.process_bucket(cycle, prefix, prefixdir, bucket)
         --- <exception caught here> ---
           File "/data/allmydata-
 tahoe-1.10.0/src/allmydata/storage/expirer.py", line 128, in
 process_bucket
             wks = self.process_share(sharefile)
           File "/data/allmydata-
 tahoe-1.10.0/src/allmydata/storage/expirer.py", line 171, in process_share
             for li in sf.get_leases():
           File "/data/allmydata-
 tahoe-1.10.0/src/allmydata/storage/mutable.py", line 265, in get_leases
             for i, lease in self._enumerate_leases(f):
           File "/data/allmydata-
 tahoe-1.10.0/src/allmydata/storage/mutable.py", line 270, in
 _enumerate_leases
             for i in range(self._get_num_lease_slots(f)):
           File "/data/allmydata-
 tahoe-1.10.0/src/allmydata/storage/mutable.py", line 250, in
 _get_num_lease_slots
             num_extra_leases = self._read_num_extra_leases(f)
           File "/data/allmydata-
 tahoe-1.10.0/src/allmydata/storage/mutable.py", line 133, in
 _read_num_extra_leases
             (num_extra_leases,) = struct.unpack(">L", f.read(4))
         struct.error: unpack requires a string argument of length 4

 }}}

 And this message is in an incident report file generated by the node
 (which is both the storage server and the gateway):

 {{{
 CorruptShareError server=5e4d7u5c shnum[2]: block hash tree failure: new
 hash soakg4py7uswum3y6vzvyk4qt3736ia37l7ti22mce3ntesuhe7a does not match
 existing hash wuoq2uiuyzope6gwyvucwx3b5q47hn46kvynkhsvzh7jndrcowla at [2
 of 3] (leaf [1] of 2)
 /data/allmydata-tahoe-1.10.0/support/lib/python2.6/site-
 packages/Twisted-13.0.0-py2.6-linux-
 x86_64.egg/twisted/internet/defer.py:575:_runCallbacks
 /data/allmydata-tahoe-1.10.0/support/lib/python2.6/site-
 packages/Twisted-13.0.0-py2.6-linux-
 x86_64.egg/twisted/internet/defer.py:827:_cbDeferred
 /data/allmydata-tahoe-1.10.0/support/lib/python2.6/site-
 packages/Twisted-13.0.0-py2.6-linux-
 x86_64.egg/twisted/internet/defer.py:380:callback
 /data/allmydata-tahoe-1.10.0/support/lib/python2.6/site-
 packages/Twisted-13.0.0-py2.6-linux-
 x86_64.egg/twisted/internet/defer.py:488:_startRunCallbacks
 --- <exception caught here> ---
 /data/allmydata-tahoe-1.10.0/support/lib/python2.6/site-
 packages/Twisted-13.0.0-py2.6-linux-
 x86_64.egg/twisted/internet/defer.py:575:_runCallbacks
 /data/allmydata-
 tahoe-1.10.0/src/allmydata/mutable/retrieve.py:797:_validate_block
 }}}

 This is with this version of Tahoe-LAFS:

 {{{
 Nevow: 0.11.1
 Twisted: 13.0.0
 allmydata-tahoe: 1.10.0
 foolscap: 0.6.4
 mock: 1.0.1
 platform: Linux-redhat_6.5-x86_64-64bit_ELF
 pyOpenSSL: 0.10
 pyasn1: 0.1.7
 pycrypto: 2.6.1
 pycryptopp: 0.6.0.1206569328141510525648634803928199668821045408958
 python: 2.6.6
 setuptools: 0.6c16dev4
 simplejson: 2.0.9
 twisted: 13.0.0
 zfec: 1.4.7
 zope.interface: unknown
 }}}

--
Ticket URL: <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/812#comment:7>
Tahoe-LAFS <https://Tahoe-LAFS.org>
secure decentralized storage


More information about the tahoe-lafs-trac-stream mailing list