<div dir="ltr">Hi Wei, sorry for my late reply.<div><br></div><div>Sheepdog uses a mechanism of virtual synchrony [1] for membership change. Under this mechanism, join/leave of a member increases an epoch number. When a sheep process receives a request from a client (including qemu and tgt), it assigns its epoch number to the request and forwards the request based on consistent hashing. Based on the epoch number in the request, sheep can know the staleness of the request. The logic is not so simple but you can follow the literal SD_RES_OLD_NODE_VER in the source code and get hints about how it works.</div><div><br></div><div>Please send more questions if you want to know more details.</div><div><br></div><div>Thanks,</div><div>Hitoshi</div><div><br></div><div>[1] <a href="https://www.cs.cornell.edu/ken/history.pdf">https://www.cs.cornell.edu/ken/history.pdf</a></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Apr 12, 2016 at 5:06 AM, Xie, Wei <span dir="ltr"><<a href="mailto:wei.xie@ttu.edu" target="_blank">wei.xie@ttu.edu</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br>
I’m doing a research based on Sheepdog that I have a question that how Sheepdog handles the addition of Sheep servers. I know that data should be automatically balanced when a new server is added. But I wonder how Sheepdog ensures the consistency of data and to synchronize the node membership changes to all the servers that each server will have the same data placement decision. For example, new data could be written before the new node membership information is synchronized to all the nodes and those at a stale state might forward data to an incorrect location. I would appreciate it if someone familiar with the source code can give me some idea.<br>
<br>
Thanks!<br>
<span class="HOEnZb"><font color="#888888"><br>
Wei Xie<br>
Texas Tech University<br>
--<br>
sheepdog mailing list<br>
<a href="mailto:sheepdog@lists.wpkg.org">sheepdog@lists.wpkg.org</a><br>
<a href="https://lists.wpkg.org/mailman/listinfo/sheepdog" rel="noreferrer" target="_blank">https://lists.wpkg.org/mailman/listinfo/sheepdog</a><br>
</font></span></blockquote></div><br></div>