Frage zum CS_JOIN kommando

Benutzeravatar
aiQon
Windoof-User
Windoof-User
Beiträge: 32
Registriert: 9. Dez 2010 18:23
Wohnort: Darmstadt

Frage zum CS_JOIN kommando

Beitrag von aiQon »

nachdem das netz steht können ja immernoch nodes joinen mittels cs_join.
in den folien steht aber: BUT download of values from other peers, not File Server!

den bootstrapping node bekomme ich aber immernoch vom FS (FS_HELLO), geht ja nicht anders,
nachdem ich dann im netz bin, soll ich dann mit p_get_key_list die für meine id und meine position passenden keys ermitteln? ich nehme an ja? sonst hätte das kommando ja keine bedeutung?
angenommen ich mach das mit p_get_key_list, soll ich dann die values bei den peers löschen, die vorher für diese verantwortlich waren und es nach dem cs_join nicht mehr sind?
weeks of coding can save hours of planing

Benutzeravatar
BadTaste
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 181
Registriert: 18. Apr 2005 16:40
Wohnort: Darmstadt
Kontaktdaten:

Re: Frage zum CS_JOIN kommando

Beitrag von BadTaste »

Ja, alles was du beschrieben hast ist korrekt.
Nach der Übertragung sollten die Chunks ,für die ein Node nicht mehr zuständig ist, gelöscht werden.

Benutzeravatar
aiQon
Windoof-User
Windoof-User
Beiträge: 32
Registriert: 9. Dez 2010 18:23
Wohnort: Darmstadt

Re: Frage zum CS_JOIN kommando

Beitrag von aiQon »

hmm, ich kann mittels p_get_key_list ja erfragen für welche keys ich zuständig bin und mir diese mit p_get laden.
aber wie bekommt dann der sendende peer mit, dass er nicht mehr zuständig ist für die keys? nach einem p_get_key_list darf er sie ja noch nicht löschen, weil ja der zuständige peer erst ein p_get absetzen muss.
soll ich mir dann den socket merken, unter dem zuerst nach der p_get_key_list nachgefragt wurde und wenn ein p_get vomselben kommt, die values aus meinem cache löschen?
weeks of coding can save hours of planing

Benutzeravatar
BadTaste
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 181
Registriert: 18. Apr 2005 16:40
Wohnort: Darmstadt
Kontaktdaten:

Re: Frage zum CS_JOIN kommando

Beitrag von BadTaste »

ja, um dies zu erreichen, muss man eine etwas andere Reihenfolge der Aktionen beim JOIN verwenden, als in der Vorlesung angegeben (so habe ich es zumindest gemacht, mit den definierten nachrichten geht es vermutlich nicht anders).
Ich verwende daher den folgenden Ablauf beim JOIN:

1. finde eigenen successor
2. P_GET_KEY_LIST für eigene keys
3. P_GET um die values zu bekommen
4. P_NOTIFY_SUCCESSOR / P_NOTIFY_PREDECESSOR

Wenn man diesen Ablauf verwendet, kann man die Keys also beim Empfang eines NOTIFY_SUCCESSOR löschen.
Das hat auch den Vorteil, dass die successor / predecessor links erst dann umgebogen werden, wenn der node bereits die zuständigen Values geladen hat, sonst müsste er ja dann doch immer wieder auf seinen successor verweisen, der dann allerdings nicht mehr der korrekte successor eines angefragten keys ist.

Antworten

Zurück zu „Archiv“