[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