[mnet-devel] new_old_metatracking implemented

Zooko O'Whielacronx zooko at zooko.com
Tue Nov 25 15:07:35 GMT 2003


Okay, if you cvs up to branch "branch_new_old_metatracking" in the mnet/ 
directory, you'll get Mnet v0.6.2.293-branch_new_old_metatracking.

That version implements new_old_metatracking as recently discussed.  Appended 
are the CVS changelog entries for all patches which have been committed to 
that branch.

If you want to run a MetaTracker which supports this protocol, cvs up in 
mnet_new/ to "branch_new_old_metatracking" to get 
Mnet v0.7.0.99-branch_new_old_metatracking.

Okay, here are the log messages.

--Zooko

-------
Log Message: (Mnet v0.6.2.291-branch_new_old_metatracking)

first implementation of "new ideas for old metatracking" (see [1])
completely untested -- probably has parse errors
committing on new branch "branch_new_old_metatracking"

changes:
 * common/peerman.py implements the "new old metatracking" idea; 
   MetaTrackerLib is completely gone
 * common/peerman.py does regular bootpage querying -- it is removed from Broker.py
 * You now discover MetaTrackers and lookup the contact info of MetaTrackers 
   via other MetaTrackers!  bootpage is *only* for the first time you log on 
   and you don't know any MetaTrackers.  Also we continue to query a random 
   bootpage every 24 hours just in case...  ?
 * many simplifications of various bits of code that used to do things in a 
   complicated way in order to do "on-demand list servers"
 * eliminate "Peer Object" idea, making BlockWrangler go back to the 
   (peerId, peerinfodict,) concept (note that in v0.7 we have a much more 
   useful and object-oriented replacement called "peerset.py")
 * fix debugprintouts not to truncate messages at MAX_VERBOSITY>=5
 * eliminate the "publish only to specified servers" feature.  Sorry, it's 
    just a casualty of the complexity of changing this stuff.  We can put it 
    back in v0.7.

[1] http://sourceforge.net/mailarchive/forum.php?thread_id=3510400&forum_id=7702


-------
Log Message: (Mnet v0.6.2.292-branch_new_old_metatracking)

 * fix syntax errors so that branch_new_old_metatracking runs ; 
   but it doesn't work


-------
Log Message: (Mnet v0.6.2.293-branch_new_old_metatracking)

new old metatracking:
 * peerman keeps a list of known peers and their commstrats
 * it adds to that list by sending a "list servers" every 15 minutes to a
   randomly chosen MT
 * when a communication with a peer fails, remove that peer from peerman's list,
   and do a "lookup contact info" with the MT whose Id is closest to that
   peer's Id in the XOR metric
   + actually, we do it to the log(N) closest MTs, where N is the number of
     known MTs
 * other MTs can be discovered in the resulting "list servers response", just
   like other kinds of servers

other interesting changes:
 * keep track of which comm strategy you used to send which message, and if
   that message fails you stop using that particular comm strategy.  In the
   past, when a message failed then we stopped using whatever comm strategy we
   *currently* had for that peer.  This could lead to situations where you
   sent a message with a bad comm strategy, then you learned a new good comm
   strategy, then you learned that the message had failed and decided to stop
   using your current comm strategy for that peer.
 * when you get new contact info, whether via a bootpage or an MT, then you
   replace your current contact info only if the new contact info has a higher 
   "sequence num" field than the current contact info;  bootpages should start 
   including the sequence num along with the MT contact info for this purpose...

internal stuff (interesting to some hackers):
 * MetaTrackerLib's "list some servers" function used to be callback-oriented,
   because it could require a message from a remote MT before it was satisfied.
   However, peerman's equivalent "list some servers" function is purely local,
   and just returns the list out of its local list as a return value.
   Therefore, some parts of the code have been simplified by removing a layer
   of callback in favor of just using the return value.
 * simplified the bootpageloader code

mundane changes:
 * remove some diagnostics printouts
 * remove TokenServerMTM and PayTool
 * remove all specified timeouts -- now everything uses dynamic timeouts 
   exclusively
 * a few other clean-ups of dead code, just because the dead code was getting 
   in the way


-------------------------------------------------------
This SF.net email is sponsored by: SF.net Giveback Program.
Does SourceForge.net help you be more productive?  Does it
help you create better code?  SHARE THE LOVE, and help us help
YOU!  Click Here: http://sourceforge.net/donate/
_______________________________________________
mnet-devel mailing list
mnet-devel at lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mnet-devel




More information about the Mnet-devel mailing list