[sheepdog] consistency problem when replicating to multi-replica

Hitoshi Mitake mitake.hitoshi at lab.ntt.co.jp
Mon Jan 5 01:52:18 CET 2015


At Sun, 04 Jan 2015 23:27:15 +0800,
guping wrote:
> 
> Sheepdog send write request to all replica simultaneously to do the 
> replication. Which I think could lead to divergent content in replicas.
> 
> Imagine a scenario, there are two write requests A & B to update the 
> same offset in a 2-replicas object. If a qemu client send A and B to a 
> gateway concurrently, the gateway will send A and B to the same set of 
> replicas simultaneously. Which could not guarantee the same sequence to 
> apply A and B, you can apply A then B in a replica and apply B then A in 
> another replica, then you get two request return successfully but not 
> the same data in the replicas.
> 
> Is this a consistency problem in sheepdog? How can we deal with it?

Hi Gu,

Currently, the above problem is prevented for a case of copy on write
requests (first write to an object). Look at
check_simultaneous_create() of sheepdog driver in qemu. Multiple COW
requests for a single object is serialized for not losing written
information illegally.

But, the driver doesn't do the serialization for ordinal write
request. As you say, there might be a possibility of divergent
objects. Could you produce the problem with artificial workload?

Thanks,
Hitoshi

> 
> -- 
> Thanks,
> Gu Ping
> -- 
> sheepdog mailing list
> sheepdog at lists.wpkg.org
> https://lists.wpkg.org/mailman/listinfo/sheepdog



More information about the sheepdog mailing list