1.2.4 problems with high concurrency, getting off by a request

Kevin Watt inspire22 at gmail.com
Sun Jan 27 22:56:46 UTC 2008


I haven't yet generated a test case that can duplicate this, but  
thought I'd announce my initial findings in case anyone else has been  
having problems with this, or have ideas about what exactly the  
problem might be.  Rolling back to 1.2.2 fixed the problem for me.

I run a fairly large site, 5 rails processes connect to memcache and  
set/get a lot of cached data.  Some of it is compressed, and some of  
it is up to 40k.  Eric Hodel's memcache_client (which I ended up  
hacking to add more error checking and debug printing).

I've experienced problems with it getting out of sync, for example

1) When I would be expecting an "END\r\n", it would send value data  
from another request made awhile ago (or possibly by another process).
2) When I would request key "ns:bans" it would reply "value  
another_key".  It would stay "behind" by a key for the entire  
request, always returning the key requested 2x ago, not the most  
recent request.
3) The whole thing would hang because socket.gets or socket.puts  
wouldn't return

I ended up adding a lot of error-checking to make sure the key the  
value being returned for was correct, then closing the connection if  
it was not.  As well as returning when missing END, etc.

Unfortunately, rafb.net removed my pastes of errors because I  
procrastinated too long before sending this report.  Hopefully the  
symptoms above are enough to help someone who perhaps knows the  
internals to track down what the problem might be.

As I said, rolling back to 1.2.2 fixed the problem.  Thanks for an  
overall great project! :)

Kevin Watt
"After all, what is your hosts' purpose in having a party? Surely not  
for you to enjoy yourself; if that were their sole purpose, they'd  
have simply sent champagne and women over to your place by taxi." -  
P. J. O'Rourke

More information about the memcached mailing list