[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