Subject: [P2PSIP] Interleaved two-phase admit

From: "Michael Chen" <[email-masked]>
Date: Mon, 07 Dec 2009 23:02:29 -0700

Hi,

Draft-06 section 9.4 describes how a peer (JP) join the overlay. From the admitting peer (AP) point of view, it is a two-phase process:

Phase-1: AP receives the JOIN request from JP and replies. Then AP send a series of STORE to to JP to forward resources that will belong to JP.

Phase-2: When the last STORE from AP to JP is acknowledged by JP, AP can now internally take JP as its predecessor and send a UPDATE indicates just that.

The problem is what if two peers X and Y happen to join the overlay via AP at the same time, and their two-phase admit on the AP side interleaved like this:

Phase-1-for-X

Phase-1-for-Y

Phase-2-for-Y

Phase-2-for-X

If their Chord ring positions are X < Y < AP, Y will join successfully, but AP might have incorrectly forwarded to X some of the resources that should have belong to Y. Also, at Phase-2-for-X, AP will discover that X is no longer AP's immediate predecessor (Y is), so AP should not admit X at all.

What should AP do?

If AP still send the UPDATE to X which shows Y is now X's immediate sucessor, then X should regard the JOIN failed. X will then try to attach to Y and JOIN via Y. Have I answer my own question? :)

--Michael