Bug 394442: Replication mget test fail on linux due to race conditions
authorTrond Norbye <trond.norbye@sun.com>
Wed, 1 Jul 2009 19:36:25 +0000 (21:36 +0200)
committerTrond Norbye <trond.norbye@sun.com>
Wed, 1 Jul 2009 19:36:25 +0000 (21:36 +0200)
commit3408a01e0f51d7eb701786253acb2709c1548443
tree35b6e82738e20f1c071e968bcee7edc2cb23a276
parent75c771a6f6e51c18775e4db8045ef3b6dead8779
Bug 394442: Replication mget test fail on linux due to race conditions

All replicas are stored on the different servers by using the quiet commands,
and when we start to receive them we will do that in another memcached_st
instance (aka another connection to the server). The code goes directly
from the SET command to trying to fetch the items from all of the servers.
This means that the memcached server may still be processing the quiet set
commands while another thread in the memcached server tries to fetch all of
the items.

To fix this we need to ensure that all of the set commands are executed on
all of the memcached servers before starting to receive them. memcached_quit
will send the QUIT command to all of the servers and wait for a response,
so we now that when memcached_quit returns all commands are executed on
the client.

In addition the response counter should not be updated when we send out the
replica storage / delete commands.
libmemcached/memcached_delete.c
libmemcached/memcached_storage.c
tests/function.c