Skip to content

Tags: jayesh/memcached

Tags

1.4.4

Toggle 1.4.4's commit message
Release 1.4.4

                    Memcached 1.4.4 Release Notes
                    =============================

Date: 2009-11-26 Thu

1 Download
~~~~~~~~~~~

Download Link:

[http://memcached.googlecode.com/files/memcached-1.4.4.tar.gz]

2 Overview
~~~~~~~~~~~

This is a maintenance release of memcached with a workaround for
common client issue as well as a few new stats.

3 Fixes
~~~~~~~~

3.1 Add partial backwards compatibility for delete with timeout 0.
===================================================================

Before version 1.4.0, there was an optional argument to delete that
would allow a client to specify that a deleted object should exist in
the cache after the deletion occurred such that add operations would
fail even though objects did not appear in the cache.

This feature was removed completely in 1.4.0, but a parser bug caused
it to slip through.  The bug was fixed in 1.4.3.  If anyone was
attempting to use it legitimately in the 1.4 series, it would simply
not work as expected.

The 1.4.4 backwards compatibility change allows specifically the value
of 0 (i.e. non-lingering delete), while continuing to reject others.
This will satisfy clients that always wish to send a value even when
they do not wish the item to linger.

4 New Features
~~~~~~~~~~~~~~~

4.1 New Stats
==============

4.1.1 auth_enabled_sasl
------------------------

This is a general stat that indicates whether SASL authentication is
enabled or not.

4.1.2 auth_cmds
----------------

Indicates the total number of authentication attempts.

4.1.3 auth_errors
------------------

Indicates the number of failed authentication attempts.

5 Contributors
~~~~~~~~~~~~~~~

The following people contributed to this release since 1.4.3.

Note that this is based on who contributed changes, not how they were
done.  In many cases, a code snippet on the mailing list or a bug
report ended up as a commit with your name on it.

Note that this is just a summary of how many changes each person made
which doesn't necessarily reflect how significant each change was.
For details on what led up into a branch, either grab the git repo and
look at the output of `git log 1.4.3..1.4.4` or use a web view.

  * Repo list:  [http://code.google.com/p/memcached/wiki/DevelopmentRepos]
  * Web View: [http://github.com/memcached/memcached/commits/1.4.4]

     2  Dustin Sallings
     2  Matt Ingenthron
     1  dormando

1.4.3

Toggle 1.4.3's commit message
Release 1.4.3

                    Memcached 1.4.3 Release Notes
                    =============================

Date: 2009-11-07 Sat

1 Download
~~~~~~~~~~~

Download Link:

[http://memcached.googlecode.com/files/memcached-1.4.3.tar.gz]

2 Overview
~~~~~~~~~~~

This is a maintenance release of memcached featuring mostly bug fixes
and one new feature.

2.1 RC history
===============

rc2 fixes a multiget bug that showed up in rc1.  A bug was not filed,
but it was found and patched at roughly the same time.

3 Fixes
~~~~~~~~

3.1 Critical Fixes
===================

  * Malicious input can crash server. bug102

3.2 Non-critical Fixes
=======================

  * Removed special case in slab sizing for factor 2. bug56
  * Provide better errors for deletion scenarios. bug3
  * Fix get stats accounting. bug104
  * Ignore stats prefix for keys without a delimiter. bug96
  * Work around rpm's broken concept of versions more. bug98
  * Use slab class growth factor limit. bug57
  * Added LSB section to init script. bug54
  * Documentation fixes
  * Various build fixes

3.3 Itemized List of Bugs Closed
=================================

If a bug shows up in this list that wasn't specifically mentioned
above, it's either too minor to mention specifically or the bug was
closed by introducing a test that proves that the bug, as described,
does not exist.

  * bug3
  * bug54
  * bug56
  * bug57
  * bug62
  * bug67
  * bug68
  * bug69
  * bug96
  * bug97
  * bug98
  * bug101
  * bug102
  * bug104

4 New Features
~~~~~~~~~~~~~~~

4.1 Support for SASL Authentication
====================================

Some installations of memcached are not in controlled environments
where simple network filtering keeps bad guys out of your stuff.  To
help with those other environments, we've introduced SASL support.
You can read more about it here:

[http://code.google.com/p/memcached/wiki/SASLHowto]

4.2 New perl tool damemtop in scripts/
=======================================

dormando's awesome memcached top - a new commandline perl tool for
monitoring small to large memcached clusters. Supports monitoring
arbitrary statistics. See scripts/README.damemtop for more
information.

This tool is intended to replace memcached-tool, but not yet.

4.3 Also Noteworthy, Slab Optimizations
========================================

Objects on the larger end of the limit should be generally more memory
efficient now as more slabs are created (thus are more granular).

5 Contributors
~~~~~~~~~~~~~~~

The following people contributed to this release since 1.4.2.

Note that this is based on who contributed changes, not how they were
done.  In many cases, a code snippet on the mailing list or a bug
report ended up as a commit with your name on it.

Note that this is just a summary of how many changes each person made
which doesn't necessarily reflect how significant each change was.
For details on what led up into a branch, either grab the git repo and
look at the output of `git log 1.4.2..1.4.3` or use a web view.

  * Repo list:  [http://code.google.com/p/memcached/wiki/DevelopmentRepos]
  * Web View: [http://github.com/memcached/memcached/commits/1.4.3]

    15  Dustin Sallings
    10  Trond Norbye
     5  dormando
     2  Colin Pitrat
     1  Monty Taylor
     1  Chang Song
     1  CaptTofu
     1  Tomash Brechko

1.4.3-rc2

Toggle 1.4.3-rc2's commit message
Release 1.4.3-rc2

                  Memcached 1.4.3-rc2 Release Notes
                  =================================

Date: 2009-11-02 Mon

1 Download
~~~~~~~~~~~

Download Link:

[http://memcached.googlecode.com/files/memcached-1.4.3_rc2.tar.gz]

2 Overview
~~~~~~~~~~~

This is a maintenance release of memcached featuring mostly bug fixes
and one new feature.

2.1 RC history
===============

rc2 fixes a multiget bug that showed up in rc1.  A bug was not filed,
but it was found and patched at roughly the same time.

3 Fixes
~~~~~~~~

3.1 Critical Fixes
===================

  * Malicious input can crash server. bug102

3.2 Non-critical Fixes
=======================

  * Removed special case in slab sizing for factor 2. bug56
  * Provide better errors for deletion scenarios. bug3
  * Fix get stats accounting. bug104
  * Ignore stats prefix for keys without a delimiter. bug96
  * Work around rpm's broken concept of versions more. bug98
  * Use slab class growth factor limit. bug57
  * Added LSB section to init script. bug54
  * Documentation fixes
  * Various build fixes

3.3 Itemized List of Bugs Closed
=================================

If a bug shows up in this list that wasn't specifically mentioned
above, it's either too minor to mention specifically or the bug was
closed by introducing a test that proves that the bug, as described,
does not exist.

  * bug3
  * bug54
  * bug56
  * bug57
  * bug62
  * bug67
  * bug68
  * bug69
  * bug96
  * bug97
  * bug98
  * bug101
  * bug102
  * bug104

4 New Features
~~~~~~~~~~~~~~~

4.1 Support for SASL Authentication
====================================

Some installations of memcached are not in controlled environments
where simple network filtering keeps bad guys out of your stuff.  To
help with those other environments, we've introduced SASL support.
You can read more about it here:

[http://code.google.com/p/memcached/wiki/SASLHowto]

4.2 New perl tool damemtop in scripts/
=======================================

dormando's awesome memcached top - a new commandline perl tool for
monitoring small to large memcached clusters. Supports monitoring
arbitrary statistics. See scripts/README.damemtop for more
information.

This tool is intended to replace memcached-tool, but not yet.

4.3 Also Noteworthy, Slab Optimizations
========================================

Objects on the larger end of the limit should be generally more memory
efficient now as more slabs are created (thus are more granular).

5 Contributors
~~~~~~~~~~~~~~~

The following people contributed to this release since 1.4.2.

Note that this is based on who contributed changes, not how they were
done.  In many cases, a code snippet on the mailing list or a bug
report ended up as a commit with your name on it.

Note that this is just a summary of how many changes each person made
which doesn't necessarily reflect how significant each change was.
For details on what led up into a branch, either grab the git repo and
look at the output of `git log 1.4.2..1.4.3-rc2` or use a web view.

  * Repo list:  [http://code.google.com/p/memcached/wiki/DevelopmentRepos]
  * Web View: [http://github.com/memcached/memcached/commits/1.4.3-rc2]

    15  Dustin Sallings
     8  Trond Norbye
     5  dormando
     2  Colin Pitrat
     1  Monty Taylor
     1  Chang Song
     1  CaptTofu
     1  Tomash Brechko

1.4.3-rc1

Toggle 1.4.3-rc1's commit message
Release 1.4.3-rc1

                  Memcached 1.4.3-rc1 Release Notes
                  =================================

Date: 2009-11-01 Sun

1 Download
~~~~~~~~~~~

Download Link:

[http://memcached.googlecode.com/files/memcached-1.4.3_rc1.tar.gz]

2 Overview
~~~~~~~~~~~

This is a maintenance release of memcached featuring mostly bug fixes
and one new feature.

3 Fixes
~~~~~~~~

3.1 Critical Fixes
===================

  * Malicious input can crash server. bug102

3.2 Non-critical Fixes
=======================

  * Removed special case in slab sizing for factor 2. bug56
  * Provide better errors for deletion scenarios. bug3
  * Fix get stats accounting. bug104
  * Ignore stats prefix for keys without a delimiter. bug96
  * Work around rpm's broken concept of versions more. bug98
  * Use slab class growth factor limit. bug57
  * Added LSB section to init script. bug54
  * Documentation fixes
  * Various build fixes

3.3 Itemized List of Bugs Closed
=================================

If a bug shows up in this list that wasn't specifically mentioned
above, it's either too minor to mention specifically or the bug was
closed by introducing a test that proves that the bug, as described,
does not exist.

  * bug3
  * bug54
  * bug56
  * bug57
  * bug62
  * bug67
  * bug68
  * bug69
  * bug96
  * bug97
  * bug98
  * bug101
  * bug102
  * bug104

4 New Features
~~~~~~~~~~~~~~~

4.1 Support for SASL Authentication
====================================

Some installations of memcached are not in controlled environments
where simple network filtering keeps bad guys out of your stuff.  To
help with those other environments, we've introduced SASL support.
You can read more about it here:

[http://code.google.com/p/memcached/wiki/SASLHowto]

4.2 New perl tool damemtop in scripts/
=======================================

dormando's awesome memcached top - a new commandline perl tool for
monitoring small to large memcached clusters. Supports monitoring
arbitrary statistics. See scripts/README.damemtop for more
information.

This tool is intended to replace memcached-tool, but not yet.

4.3 Also Noteworthy, Slab Optimizations
========================================

Objects on the larger end of the limit should be generally more memory
efficient now as more slabs are created (thus are more granular).

5 Contributors
~~~~~~~~~~~~~~~

The following people contributed to this release since 1.4.2.

Note that this is based on who contributed changes, not how they were
done.  In many cases, a code snippet on the mailing list or a bug
report ended up as a commit with your name on it.

Note that this is just a summary of how many changes each person made
which doesn't necessarily reflect how significant each change was.
For details on what led up into a branch, either grab the git repo and
look at the output of `git log 1.4.2..1.4.3-rc1` or use a web view.

  * Repo list:  [http://code.google.com/p/memcached/wiki/DevelopmentRepos]
  * Web View: [http://github.com/memcached/memcached/commits/1.4.3-rc1]

    15  Dustin Sallings
     7  Trond Norbye
     5  dormando
     2  Colin Pitrat
     1  Chang Song
     1  CaptTofu
     1  Monty Taylor

1.4.2

Toggle 1.4.2's commit message
Release 1.4.2

                  Memcached 1.4.2 Release Notes
                  =============================

1 Download
~~~~~~~~~~~

Download Link:

[http://memcached.googlecode.com/files/memcached-1.4.2.tar.gz]

2 Overview
~~~~~~~~~~~

This is a maintenance release consisting primarily of bug fixes.

3 Fixes
~~~~~~~~

3.1 Critical Fixes
===================

  * Reject keys larger than 250 bytes in the binary protocol (bug94)
  * Bounds checking on stats cachedump (bug92)
  * Binary protocol set+cas wasn't returning a new cas ID (bug87)

3.2 Non-critical Fixes
=======================

  * Binary quitq didn't actually close the connection (bug84)
  * Build fix on CentOS 5 (bug88)
  * Slab boundary checking cleanup (bad logic in unreachable code)
  * Removed some internal redundancies.
  * Use the OS's provided htonll/ntohll if present (bug83)
  * Test fixes/cleanup/additions.
  * Get hit memory optimizations (bug89)
  * Disallow -t options that cause the server to not work (bug91)
  * memcached -vv now shows the final slab
  * Killed off incomplete slab rebalance feature.
  * Better warnings.
  * More consistent verbosity in binary and ascii (bug93)
  * More RPM spec fixes.

4 New Features
~~~~~~~~~~~~~~~

4.1 Support for libhugetlbfs (in Linux)
========================================

From [http://libhugetlbfs.ozlabs.org/] -

     libhugetlbfs is a library which provides easy access to huge
     pages of memory. It is a wrapper for the hugetlbfs file
     system.

If you are running memcached with a very large heap in Linux, this
change will make it available to you.  The hugetlbfs HOWTO provides
detailed information on how to configure your Linux system and provide
advice to applications (such as memcached) to make use of it.

4.2 Support for evictions, evict_time and OOM counts in memcached-tool
=======================================================================

memcached-tool is a commandline tool to display information about your
server.  It displays more now.

4.3 Configurable maximum item size.
====================================

Many people have asked for memcached to be able to store items larger
than 1MB, while it's generally recommended that one *not* do this, it
is now supported on the commandline.

A few enlightened folk have also asked for memcached to reduce the
maximum item size.  That is also an option.

The new -I parameter allows you to specify the maximum item size at
runtime.  It supports a unit postfix to allow for natural expression
of item size.

Examples:

memcached -I 128k # Refuse items larger than 128k.
memcached -I 10m  # Allow objects up to 10MB

4.4 New stat: 'evicted_nonzero'
================================

The evicted_nonzero stat is a counter of all of the evictions for
items that had an expiration time greater than zero.

This can be used to help distinguish "healthy" evictions from
"unhealthy" ones.  If all of your evictions are for objects with no
expiration, then they're naturally falling off the LRU as opposed to
being evicted before their maximum expiry that was set at item store
time.

4.5 Protocol definitions for range protocol.
=============================================

memcached ships with a binary protocol header that can be used when
implementing your own protocol parsers and generators.  The structure
definitions and opcodes for the range specification are included in
this header.

Note that the server *does not* support these operations.

5 Contributors
~~~~~~~~~~~~~~~

The following people contributed to this release since 1.4.1.

Note that this is based on who contributed changes, not how they were
done.  In many cases, a code snippet on the mailing list or a bug
report ended up as a commit with your name on it.

Note that this is just a summary of how many changes each person made
which doesn't necessarily reflect how significant each change was.
For details on what led up into a branch, either grab the git repo and
look at the output of `git log 1.4.1..1.4.2` or use a web view.

  * Repo list:  [http://code.google.com/p/memcached/wiki/DevelopmentRepos]
  * Web View: [http://github.com/memcached/memcached/commits/1.4.2]

    12  Dustin Sallings
    10  Trond Norbye
     9  dormando
     1  Vladimir
     1  Ryan Tomayko
     1  Mat Hostetter
     1  Jonathan Steinert
     1  Dmitry Isaykin
     1  Jonathan Steinert

1.4.2-rc1

Toggle 1.4.2-rc1's commit message
Release 1.4.2-rc1

                  Memcached 1.4.2-rc1 Release Notes
                  =================================

1 Download
~~~~~~~~~~~

Download Link:

[http://memcached.googlecode.com/files/memcached-1.4.2_rc1.tar.gz]

2 Overview
~~~~~~~~~~~

This is a maintenance release consisting primarily of bug fixes.

3 Fixes
~~~~~~~~

3.1 Critical Fixes
===================

  * Reject keys larger than 250 bytes in the binary protocol (bug94)
  * Bounds checking on stats cachedump (bug92)
  * Binary protocol set+cas wasn't returning a new cas ID (bug87)

3.2 Non-critical Fixes
=======================

  * Binary quitq didn't actually close the connection (bug84)
  * Build fix on CentOS 5 (bug88)
  * Slab boundary checking cleanup (bad logic in unreachable code)
  * Removed some internal redundancies.
  * Use the OS's provided htonll/ntohll if present (bug83)
  * Test fixes/cleanup/additions.
  * Get hit memory optimizations (bug89)
  * Disallow -t options that cause the server to not work (bug91)
  * memcached -vv now shows the final slab
  * Killed off incomplete slab rebalance feature.
  * Better warnings.
  * More consistent verbosity in binary and ascii (bug93)

4 New Features
~~~~~~~~~~~~~~~

4.1 Support for libhugetlbfs (in Linux)
========================================

From [http://libhugetlbfs.ozlabs.org/] -

     libhugetlbfs is a library which provides easy access to huge
     pages of memory. It is a wrapper for the hugetlbfs file
     system.

If you are running memcached with a very large heap in Linux, this
change will make it available to you.  The hugetlbfs HOWTO provides
detailed information on how to configure your Linux system and provide
advice to applications (such as memcached) to make use of it.

4.2 Support for evictions, evict_time and OOM counts in memcached-tool
=======================================================================

memcached-tool is a commandline tool to display information about your
server.  It displays more now.

4.3 Configurable maximum item size.
====================================

Many people have asked for memcached to be able to store items larger
than 1MB, while it's generally recommended that one *not* do this, it
is now supported on the commandline.

A few enlightened folk have also asked for memcached to reduce the
maximum item size.  That is also an option.

The new -I parameter allows you to specify the maximum item size at
runtime.  It supports a unit postfix to allow for natural expression
of item size.

Examples:

memcached -I 128k # Refuse items larger than 128k.
memcached -I 10m  # Allow objects up to 10MB

4.4 New stat: 'evicted_nonzero'
================================

The evicted_nonzero stat is a counter of all of the evictions for
items that had an expiration time greater than zero.

This can be used to help distinguish "healthy" evictions from
"unhealthy" ones.  If all of your evictions are for objects with no
expiration, then they're naturally falling off the LRU as opposed to
being evicted before their maximum expiry that was set at item store
time.

4.5 Protocol definitions for range protocol.
=============================================

memcached ships with a binary protocol header that can be used when
implementing your own protocol parsers and generators.  The structure
definitions and opcodes for the range specification are included in
this header.

Note that the server *does not* support these operations.

5 Contributors
~~~~~~~~~~~~~~~

The following people contributed to this release since 1.4.1.

Note that this is based on who contributed changes, not how they were
done.  In many cases, a code snippet on the mailing list or a bug
report ended up as a commit with your name on it.

Note that this is just a summary of how many changes each person made
which doesn't necessarily reflect how significant each change was.
For details on what led up into a branch, either grab the git repo and
look at the output of `git log 1.4.1..1.4.2-rc1` or use a web view.

  * Repo list:  [http://code.google.com/p/memcached/wiki/DevelopmentRepos]
  * Web View: [http://github.com/memcached/memcached/commits/1.4.2-rc1]

    16  Dustin Sallings
     8  Trond Norbye
     1  Mat Hostetter
     1  Matt Ingenthron
     1  Monty Taylor
     1  Steve Yen
     1  Adam Thomason
     1  dormando
     1  Cosimo Streppone

1.4.1

Toggle 1.4.1's commit message
 Memcached 1.4.1 Release Notes

                    =============================

Date: 2009-08-26 Wed

Table of Contents
=================
1 Download
2 Overview
3 Fixes
    3.1 Criticial Fixes
    3.2 Non-critical Fixes
4 New Features
5 Contributors

1 Download
~~~~~~~~~~~

Download Link:

[http://memcached.googlecode.com/files/memcached-1.4.1.tar.gz]

2 Overview
~~~~~~~~~~~

This is a maintenance release consisting primarily of bug fixes.

3 Fixes
~~~~~~~~

3.1 Criticial Fixes
====================

  * Boundary condition during pipelined decoding caused crash (bug72)
  * Bad initialization during buffer realloc (bug77)
  * Buffer overrun in stats_prefix_find (bug79)
  * Memory corruption from negative and invalid item lengths (bug70)

3.2 Non-critical Fixes
=======================

  * Update flush stats for binary flushes (bug71)
  * Build fixes for OpenBSD
  * Build fixes for Solaris/gcc
  * Cleanup warnings brought to us by OpenBSD (sprintf, etc...)
  * Lots of fixes with the test tools
  * Various documentation cleanups
  * RPM spec autoupdate

4 New Features
~~~~~~~~~~~~~~~

  * stats slabs returns the number of requested bytes as mem_requested
  * memcached can bind to ephemeral ports (used for testing)

5 Contributors
~~~~~~~~~~~~~~~

The following people contributed to this release since 1.4.0.

Note that this is based on who contributed changes, not how they were
done.  In many cases, a code snippet on the mailing list or a bug
report ended up as a commit with your name on it.

Note that this is just a summary of how many changes each person made
which doesn't necessarily reflect how significant each change was.
For details on what led up into a branch, either grab the git repo and
look at the output of `git log 1.4.0..1.4.1` or use a web view.

  * Repo list:  [http://code.google.com/p/memcached/wiki/DevelopmentRepos]
  * Web View: [http://github.com/memcached/memcached/commits/1.4.1]

    16  Dustin Sallings
     8  Trond Norbye
     2  dormando
     1  Mat Hostetter
     1  Matt Ingenthron
     1  Monty Taylor
     1  Steve Yen
     1  Adam Thomason
     1  Cosimo Streppone

1.4.1-rc1

Toggle 1.4.1-rc1's commit message
 Memcached 1.4.1-rc1 Release Notes

                    =============================

Date: 2009-08-26 Wed

Table of Contents
=================
1 Download
2 Overview
3 Fixes
    3.1 Criticial Fixes
    3.2 Non-critical Fixes
4 New Features
5 Contributors

1 Download
~~~~~~~~~~~

Download Link:

[http://memcached.googlecode.com/files/memcached-1.4.1-rc1.tar.gz]

2 Overview
~~~~~~~~~~~

This is a maintenance release consisting primarily of bug fixes.

3 Fixes
~~~~~~~~

3.1 Criticial Fixes
====================

  * Boundary condition during pipelined decoding caused crash (bug72)
  * Bad initialization during buffer realloc (bug77)
  * Buffer overrun in stats_prefix_find (bug79)
  * Memory corruption from negative and invalid item lengths (bug70)

3.2 Non-critical Fixes
=======================

  * Update flush stats for binary flushes (bug71)
  * Build fixes for OpenBSD
  * Build fixes for Solaris/gcc
  * Cleanup warnings brought to us by OpenBSD (sprintf, etc...)
  * Lots of fixes with the test tools
  * Various documentation cleanups

4 New Features
~~~~~~~~~~~~~~~

  * stats slabs returns the number of requested bytes as mem_requested
  * memcached can bind to ephemeral ports (used for testing)

5 Contributors
~~~~~~~~~~~~~~~

The following people contributed to this release since 1.4.0.

Note that this is based on who contributed changes, not how they were
done.  In many cases, a code snippet on the mailing list or a bug
report ended up as a commit with your name on it.

Note that this is just a summary of how many changes each person made
which doesn't necessarily reflect how significant each change was.
For details on what led up into a branch, either grab the git repo and
look at the output of `git log 1.4.0..1.4.1-rc1` or use a web view.

  * Repo list:  [http://code.google.com/p/memcached/wiki/DevelopmentRepos]
  * Web View: [http://github.com/memcached/memcached/commits/1.4.1-rc1]

    16  Dustin Sallings
     8  Trond Norbye
     2  dormando
     1  Mat Hostetter
     1  Matt Ingenthron
     1  Monty Taylor
     1  Steve Yen
     1  Adam Thomason
     1  Cosimo Streppone

1.4.0

Toggle 1.4.0's commit message
Release 1.4.0

                     Memcached 1.4 Release Notes
                     ===========================

1 Download
~~~~~~~~~~~

Download Link:

[http://memcached.googlecode.com/files/memcached-1.4.0.tar.gz]

2 New Features
~~~~~~~~~~~~~~~

2.1 Binary Protocol
====================

A new feature that brings new features.  We now have goodness like
CAS-everywhere (e.g. delete), silent, but verifiable mutation
commands, and many other wonders.

Note that the original protocol is *not* deprecated.  It will be
supported indefinitely, although some new features may only be
available in the binary protocol.

2.1.1 Client Availability
--------------------------

Many clients for the binary protocol are available.

* C

  libmemcached supports just about anything you can do with a memcached
  protocol and is the foundation for many clients in many different
  languages (which you can find linked from the project page).

  Project page:  [http://tangent.org/552/libmemcached.html]

* Java

  spymemcached has very good text and binary protocol support over IPv4
  and IPv6 with a quite comprehensive test suite.

  Project page:  [http://code.google.com/p/spymemcached/]

* Protocol Spec

  NIH problem?  Go write your own client.  :)

  [http://cloud.github.com/downloads/memcached/memcached/protocol-binary.txt]

2.2 Performance
================

Lots of effort has gone into increasing performance.

There is no longer a build-time distinction between a single-threaded
and multi-threaded memcached.  If you want a single-threaded
memcached, ask for one thread (though there'll still be utility
threads and other such things in the background).  This change lets us
focus on a future where multiple cores can be saturated for servicing
requests.

Facebook-inspired contention reduction with per-thread stat collection
and the Facebook connection dispatch and thread starvation prevention
contributions helped our scalability.

Lock analysis also showed us that we had quite a bit of contention on
hash table expansion which has been moved into its own thread, greatly
improving the scalability on multicore hardware.

A variety of smaller things also shook out of performance testing and
analysis.

There's also a memory optimization for users who don't actually make
use of CAS.  Running memcached with -C disables the use of CAS
resulting in a savings of about eight bytes per item.  If you have big
caches, and don't use CAS, this can lead to a considerable savings.

2.3 Stats
==========

There are several new stats and some new ways to look at older stats.

2.3.1 New Stats
----------------

* stats settings

  Show all current server settings (useful for troubleshooting as well
  as internal verification).

* Delete

  The global stats now contain statistics on deletion.

  delete_hits refers to the number of times a deletion command was
  issued which resulted in a modification of the cache while
  delete_misses refers to the number of times a deletion command was
  issued which had no effect due to a key mismatch.

* Incr/Decr

  Incr and decr each have a pair of stats showing when a
  successful/unsuccessful incr occurred.  incr_hits, incr_misses,
  decr_hits, and decr_misses show where such mutations worked and where
  they failed to find an existing object to mutate.

* CAS

  CAS stats are tracked in three different ways:

  + cas_hits

    Number of attempts to CAS in a new value that worked.

  + cas_misses

    Number of attempts to CAS in a value where the key was not found.

  + cas_badval

    Number of attempts to CAS in a value where the CAS failed due to the
    object changing between the gets and the update.

* slab class evicted time

  Per slab class, you can now see how recently accessed the most recent
  evicted data was.  This is a useful gauge to determine eviction
  velocity on a slab so you can know whether evictions are healthy or if
  you've got a problem.

* Connection yield counts

  The -R option allows you to limit how many requests are handled in a
  single trip through the network state machine.  The conn_yields stat
  reports how many times this has occurred.

  This is most useful when you have very high rates of operations from a
  single client which seems to be hogging server resources unfairly,
  such as extremely large multi-get operations.  We do not expect this
  to be a common situation, but this stat can help diagnose such issues
  if they should occur.

2.3.2 More Granular Stats
--------------------------

Where possible, stats are now tracked individually by slab class.  The
following stats are available on a per-slab-class basis (via "stats slabs"):

  * get_hits
  * cmd_set
  * delete_hits
  * incr_hits
  * decr_hits
  * cas_hits
  * cas_badval

(misses are obviously not available as they refer to a non-existent item)

2.3.3 Removed stats
--------------------

"stats malloc" and "stats maps" have been removed.

If you depended on these commands for anything, please let us know so
we may suggest alternatives for you.

2.4 Misc
=========
- More tests
- More/better documentation
- Code cleanup

3 Bug Fixes
~~~~~~~~~~~~

  * Build fixes on ubuntu (gcc and icc) and FreeBSD
  * bad interaction with cas + incr (bug 15)
  * setuid failures are reported properly at daemonization time
  * decr overflow causing unnecessary truncation to 0 (bug 21)
  * failure to bind on Linux with no network (i.e. laptop dev)
  * some memcached-tool cleanup
  * Alignment bug in binary stats (bug26)
  * Occasional buffer overflow in stats (bug27)
  * Try to recycle memory more aggressively. (bug14)
  * incr validation (bug31)
  * 64-bit incr/decr delta fixes (bug21)
  * ascii UDP set (bug36)
  * stats slabs' used chunks (bug29)
  * stats reset should reset item stats, eviction counters, etc... (bug22)
  * Fix all stat buffer management
  * Fixes for -R handling (bug61)
  * GCC 4.4 fixes (bug60)

4 Development Info
~~~~~~~~~~~~~~~~~~~

We've added a bunch of tests and new code coverage reports.

All included code in this release has been tested against the
following platforms (using the in-tree test suite):

  * ubuntu 8.10 (64-bit, both gcc and icc)
  * ubuntu 8.04 (32-bit)
  * ubuntu 9.10 (64-bit, gcc 4.4)
  * OS X 10.5 (ppc and intel)
  * OpenSolaris 5.11 x86 (with and without dtrace)
  * Solaris 10 sparc (with and without dtrace)
  * FreeBSD 7 x86

5 Feedback
~~~~~~~~~~~

This version is considered a stable release and has been well-tested,
but bugs are always possible.  Report feedback to the list or file
bugs as you find them.

  * Mailing List:  [http://groups.google.com/group/memcached]
  * Issue Tracker:  [http://code.google.com/p/memcached/issues/list]
  * IRC:  #memcached on freenode

6 Contributors
~~~~~~~~~~~~~~~

The following people contributed to this release since 1.2.8.

Note that this is based on who contributed changes, not how they were
done.  In many cases, a code snippet on the mailing list or a bug
report ended up as a commit with your name on it.

Note that this is just a summary of how many changes each person made
which doesn't necessarily reflect how significant each change was.
For details on what led up into a branch, either grab the git repo and
look at the output of `git log 1.2.8..1.4.0` or use a web view.

  * Repo list:  [http://code.google.com/p/memcached/wiki/DevelopmentRepos]
  * Web View: [http://github.com/memcached/memcached/commits/1.4.0]

  149  Dustin Sallings
   61  Trond Norbye
   33  Toru Maesaka
   30  dormando
   13  Steve Yen
    7  hachi
    6  Aaron Stone
    5  Brad Fitzpatrick
    4  Victor Kirkebo
    3  Eric Lambert
    2  Brian Aker
    1  Chris Goffinet
    1  Clinton Webb
    1  Matt Ingenthron
    1  Ricky Zhou
    1  Evan Klitzke

1.4-rc1

Toggle 1.4-rc1's commit message
Only turn off strict aliasing for gcc 4.4.*