[tahoe-lafs-trac-stream] [tahoe-lafs] #1382: immutable peer selection refactoring and enhancements

tahoe-lafs trac at tahoe-lafs.org
Mon Nov 4 22:44:30 UTC 2013


#1382: immutable peer selection refactoring and enhancements
-------------------------+-------------------------------------------------
     Reporter:  kevan    |      Owner:  markberger
         Type:           |     Status:  new
  enhancement            |  Milestone:  1.11.0
     Priority:  major    |    Version:  1.8.2
    Component:  code-    |   Keywords:  review-needed servers-of-happiness
  peerselection          |  blocks-release
   Resolution:           |
Launchpad Bug:           |
-------------------------+-------------------------------------------------

Comment (by markberger):

 I've been working on the suggestions we discussed during last week's dev
 chat.

 It turns out a lot of the query counting mechanics in place on my branch
 are incorrect. I'm shocked that it actually passes all of the tests in its
 current state. Also the current version tries to place shares on servers
 even when we have enough information to determine that a happy upload
 cannot occur.

 I've started to correct these issues, as well as remove the redundant
 loop, in a branch [https://github.com/markberger/tahoe-
 lafs/tree/1382-rewrite-2 here].

 For the above branch, when `tracker.ask_about_existing_shares()` is called
 on `FakeStorageServer`, I receive the following error for each tracker:

 {{{
 [Failure instance: Traceback: <type 'exceptions.AttributeError'>:
 FakeStorageServer instance has no attribute 'get_buckets'
 /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/twisted/internet/base.py:800:runUntilCurrent
 /Users/markberger/Code/tahoe-lafs/support/lib/python2.7/site-
 packages/foolscap-0.6.4-py2.7.egg/foolscap/eventual.py:26:_turn
 /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/twisted/internet/defer.py:368:callback
 /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/twisted/internet/defer.py:464:_startRunCallbacks
 --- <exception caught here> ---
 /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/twisted/internet/defer.py:551:_runCallbacks
 /Users/markberger/Code/tahoe-
 lafs/src/allmydata/test/test_upload.py:124:<lambda>
 /Users/markberger/Code/tahoe-
 lafs/src/allmydata/test/test_upload.py:121:_call
 ]
 }}}

 Sadly, this error does not appear when you run `python setup.py trial -s
 allmydata.test.test_upload`. It simply fails, stating that the happiness
 error messages are wrong. To reproduce this error message, `import pdb`
 and call `pdb.set_trace()` in `_handle_existing_response` within
 `immutable/upload.py`.

 I'm not sure why I'm receiving this error because the same function is
 called in 1.10. Additionally, there is some code that should give
 `get_buckets` a proper response [https://github.com/tahoe-lafs/tahoe-
 lafs/blob/77029991070fef8f6a89fbb8407cc238de2defeb/src/allmydata/test/no_network.py#L105
 here].

 If anyone has some advice on how to fix this error, I would appreciate the
 help. I haven't been able to figure this bug out.

-- 
Ticket URL: <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1382#comment:50>
tahoe-lafs <https://tahoe-lafs.org>
secure decentralized storage


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