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 > [email protected] > https://lists.wpkg.org/mailman/listinfo/sheepdog -- sheepdog mailing list [email protected] https://lists.wpkg.org/mailman/listinfo/sheepdog
