[chord] stabilization in simulator
Michael Walfish
mwalfish at lcs.mit.edu
Mon May 17 21:16:14 EDT 2004
| Hi,
| I need some clarification regarding the stabilization routine in Chord
| simulator.
|
| A node n invokes stabilization to refresh one of its finger; the
| finger_id is recorded in r->x. At each intermediate node n, function
| processRequest will make sure that r will be forwarded until
| n->id < r->x <= getSuccessor(n).
Are you looking at lines 155-203 of request.c? If not, which lines of code
are you referring to?
| When this state is achieved, r->done = TRUE. According to my
| interpretation, this r should be returned to r->initiator so that
| r->initiator can update the finger table. However, in the code,
| if (n->id != r->initiator) then processRequest will forward r to
| r->succ. Isn't r->succ is the correct/refreshed finger that should
| be made known to r->initiator?
If you're referring to the lines of code above: assuming r->done = TRUE
[line 162], if (n->id != r->initiator) [line 164] then dst = r->initiator
[203] so that the request can return to the initiator.
The only time dst = r->succ [187] is a special case when the old successor
of the initiator changes and the initiator needs to keep looking up the
requested finger.
More information about the chord
mailing list