[Sheepdog] Doubt from sheepdog documentation !

MORITA Kazutaka morita.kazutaka at lab.ntt.co.jp
Tue Aug 23 17:47:16 CEST 2011


At Mon, 22 Aug 2011 19:13:41 -0400,
Vivek Chaurasiya wrote:
> 
> Hi all,
> 
> While reading the documentation of SD at
> https://github.com/collie/sheepdog/wiki/Sheepdog-Design
> 
> >>retrying I/O requests
> 
> >>Sheepdog stores all node membership histories. We call the version number
> of the histories ''epoch'' (See also the 'Object Recovery' section). When
> the gateway forwards I/O >>requests to the target node and the latest epoch
> number doesn't match between the gateway and the target node, the I/O
> requests fail and *the gateway retries the requests until >>the epoch
> numbers match.* This is necessary to keep a strong consistency of replicated
> objects.
> 
> 1. Does this algorithm is on the lines of 'Paxos consensus protocol' ?

No.  What I meant here is that we can avoid the possibility to read
the old data.  If the gateway read data from a wrong target based on
the old node membership info, the data may be no longer valid.  To
avoid this problem, the sheep daemon checks the version of a node
membership (epoch) every time when it communicates with the other
nodes.

> 
> 2. When gateway retries, do we make sure that is doesn't contact the same
> target node it did before ?

Unfortunately, no.  The gateway will simply try again as soon as
possible, and it can happen to connect the same node based on the old
epoch.


Thanks,

Kazutaka



More information about the sheepdog mailing list