Release candidate: 1.2.4-rc1
dormando at rydia.net
Tue Nov 20 07:23:43 UTC 2007
I've wrapped a 1.2.4-rc1 release candidate for memcached.
Fetch it here: http://danga.com/memcached/dist/memcached-1.2.4-rc1.tar.gz
... and give it a beatdown! Report any bugs or ugliness to the list.
I've merged all non-feature oustanding patches that I can find. We've
made append/prepend/cas work in a way we all seem to like. I'll write
more documentation and detail for new users on these features after the
official release. For now I'd love to see some testing.
First, my "last" fix for CAS (I'm sure there're even more bugs...) was
really ugly. Please allow me to explain myself before lynching:
-- I couldn't figure out how to store a temporary buffer and "free" it
after the transmit function. There isn't really a good place to plug
The msg handling code should be abstracted up one more layer, so the
transmit function can call a msg's "free" function when it's sure all of
its logical data has been sent. This isn't that hard, but it's more
work. Since I've committed code that has added to the ugly, I'll
volunteer to later fix the ugly and remove the need for suffixlist and
ilist entirely from the connection structures. I'd happily invite anyone
else to attempt though ;)
The idea behind my final patch was to lower memory overhead for
non-users of CAS. The easy way out would be to extend the item suffix
size and always write the CAS value in. Then on process_get_command(),
you would toss the suffix into an iov based on whether or not you wanted
the CAS value to be printed.
But for users with millions of small items, that would offer a
significant percentage of overhead, so I moved the ugliness to the
connection structure and added a global freelist for "suffix buffers",
which are then reused for CAS commands.
Which appears to make 'gets' and 'cas' work as expected.
So, again, please, give this a bit more of a beatdown and send patches,
feedback, etc, straight to the list (not me!).
We would love to tag and stamp 1.2.4 as final within the next few days,
so we all may shift focus to completing the binary protocol branch.
I'll be sending a followup either later tonight or tomorrow with a merge
of Dustin's external binary tree.
More information about the memcached