Is there a mechanism to time out individual operations?

If memcached freezes, then it appears my calls to 'get' will block until
memcached wakes up.  Is there any way to set a timeout for that call?

I can repro this in my unit tests by sending a SIGSTOP to memcached before
doing a 'get'?

Here are my observations:

apr_memcache_multgetp seems to time out in bounded time if I SIGSTOP the
memcached process. Yes!

apr_memcache_getp seems to hang indefinitely if I SIGSTOP the memcached
process.

apr_memcache_set seems to hang indefinitely if I SIGSTOP the memcached
process.

apr_memcache_delete seems to hang indefinitely if I SIGSTOP the memcached
process.

apr_memcache_stats seems to hang indefinitely if I SIGSTOP the memcached
process.

That last one really sucks as I am using that to print the status of all my
cache shards to the log file if I detected a problem :(


Why does apr_memcache_multgetp do what I want and not the others?  Can I
induce the others to have reasonable timeout behavior?

When I SIGSTOP memcached this makes it hard to even restart Apache, at
least with graceful-stop.


On a related note, the apr_memcache
documentation<http://apr.apache.org/docs/apr-util/1.4/group___a_p_r___util___m_c.html>is
very thin.  I'd be happy to augment it with my observations on its
usage
and the meaning of some of the arguments if that was desired.  How would I
go about that?

-Josh

Reply via email to