Changelog

Changes from release 2.8.3 to 2.8.4

contributors
Release of 2.8.4

The 2.8.4 release of spymemcached has only a
single bugfix for handling some issues with the
observe command introduced in 2.8.3.  The observe
command is for use with Couchbase Server only.

Summary of changes by contributor:

Raghavan Srinivas (1):
      Fixed issues with the Observe Method(s)

With others which can be listed here:
http://code.google.com/p/spymemcached/issues/list

Note that Couchbase also tracks issues here:
http://www.couchbase.org/issues/browse/SPY
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.12 (Darwin)

iEYEABECAAYFAlA0bb0ACgkQQM0/OE2fY9oE5wCaAxAkZVsIbO7iWWhtfz9gVj8Q
A/UAniDgAtcEeDxTI8vg4AQ6CnkfgoyL
=oMhK
-----END PGP SIGNATURE-----

Changes from release 2.8.2 to 2.8.3

contributors
Release of 2.8.3

The 2.8.3 release is a minor update to spymemcached which
includes a bug fix and some minor new features in support
of Couchbase Server in the Couchbase Java Client project
which depends on some protocol capabilities and handling
in this project.

Note that SPY-97 was opened for unlock, as the fix
described above doesn't address situations where there
is a TMPFAIL or a NOT_MY_VBUCKET, for example.

Summary of changes by contributor:

Raghavan Srinivas (3):
      Adding a getCas() for Store functions
      Changes for Observe.
      Fixed failing Unlock test

Matt Ingenthron (1):
      Add the node back to connected during reconnect.  Issue 225.

With others which can be listed here:
http://code.google.com/p/spymemcached/issues/list

Note that Couchbase also tracks issues here:
http://www.couchbase.org/issues/browse/SPY
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.12 (Darwin)

iEYEABECAAYFAlAxVnUACgkQQM0/OE2fY9revACggGGC77kpAmFNyNTElmHca5BP
8YEAoLP5KAXL6QdZ3e2Ky2rp3c7hZvuM
=CbPl
-----END PGP SIGNATURE-----

Changes from release 2.8.1 to 2.8.2

contributors
Release of 2.8.2

The 2.8.2 release is a minor update to spymemcached which
includes bug fixes and a workaround to recently discovered
issues.  The major workaround included in this release is
that optimization has been disabled.  Recent tests
indicate that there is a problem with optimization in the
ascii implementation that may cause operations to come
back with a cache miss prematurely.  Further, it was found
on binary protocol that an error in the middle of binary
optimization pipelined sets, it can cause lack of recovery
on the client.

To address these two correctness issues, optimization is
now off by default, but may be enabled to make the client
behave like it had previously.  It is expected that
optimization will be re-enabled in the next release.

There were also minor bugfixes for logging, some internal
utilities, and handling of certain error cases.

Summary of changes by contributor:

Matt Ingenthron (11):
      Change vbucket retry logging to debug level. SPY-87
      Make queueReconnect protected so subclasses can request reconnects.
      Make the OperationState volatile.  SPY-88
      Add javadoc for OperationFuture.
      Comment correction in MemcachedConnection.  Non-javadoc.
      Let offline try to work with already downloaded mvn.
      Correct test for StringUtils.join().
      Disable optimization by default, remove assert. SPY-88.
      Revert ErrorCode and OperationStatus changes.
      Change selection key logging to debug level.
      Fixed misc checkstyle errors which crept in.

Mike Wiederhold (9):
      Retry not my vbucket error for optimized sets. SPY-88
      Fixed tap message test cases
      Create an ErrorCode class for error codes
      OperationStatus now has an error code
      Check if op is null before asserting in OperationFuture
      SPY-90: getStats() can return an error
      Fixed parsing of delete tap packet
      JCBC-52: Fix StringUtils.join()
      JCBC-72: Make OperationException extendable

Marty Schoch (2):
      add TAP Opcodes for start/end checkpoint
      add support for TAP request/response with checkpoint info

With others which can be listed here:
http://code.google.com/p/spymemcached/issues/list

Note that Couchbase also tracks issues here:
http://www.couchbase.org/issues/browse/SPY
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.12 (Darwin)

iEYEABECAAYFAlAXJ+4ACgkQQM0/OE2fY9rRXwCfcXQOxw36+cFdWK+iDO/obtwd
MoMAoMbq8dLS4/yz29/+vHbtIG2QCkxl
=bm+e
-----END PGP SIGNATURE-----

Changes from release 2.8.0 to 2.8.1

contributors
Release of 2.8.1

The 2.8.1 release is a minor update to spymemcached which
includes bug fixes related to the TAP feature and some
minor changes to generate better maven descriptions.

Summary of changes by contributor:

Matt Ingenthron (10):
      Enhanced TapTest, ensuring success with random leftovers.
      Remove test for "stats cachedump".
      Wait longer on tap data received.
      Fixed handling of TAP flags.
      Decode TAP mutation flags as host byte order.
      Add test coverage for ResponseMessage and fix to get bytes.
      Complete the removal of stats cachedump.
      Bump log4j to 1.2.16 to get rid of transitive JMS deps.
      Make log4j, spring-beans optional in our maven artifacts.
      Added toString() for ResponseMessage.

Mike Wiederhold (2):
      Created TapStream abstraction
      Made TapAck its own class

Raghavan Srinivas (1):
      Added support for unl command

With others which can be listed here:
http://code.google.com/p/spymemcached/issues/list

Note that Couchbase also tracks issues here:
http://www.couchbase.org/issues/browse/SPY
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (Darwin)

iEYEABECAAYFAk9qeFYACgkQQM0/OE2fY9qrxwCcDtDMg2OjIVwTT0Osn7hFIoDo
lpAAnj4TFiSBzhH9j3uKDNClEX/BBWoa
=BdaS
-----END PGP SIGNATURE-----

Changes from release 2.7.3 to 2.8.0

contributors
Release of 2.8.0

The 2.8.0 release is a minor update to spymemcached which
includes bug fixes, some minor new features and some
features split out into a separate project.

Starting in the 2.8.0 release, there is no longer support
directly in the MemcachedClient object for Membase Server.
That has been broken out into a separate library which is
hosted at http://www.couchbase.com/develop/java/current

By separating out that code, it reduced the dependency
burden on this project.  Also, a number of the proposed
new features, namely support for Couchbase Server views
seemed increasingly like they did not belong in this
project.

The new project should be compatible with minimal,
though some, code changes.  It is Open Source under an
Apache 2.0 license, and support of that library continues
by the same developers.

This new release also includes Iterator versions of
getAsyncBulk and getBulk.

For example:

    public PrefixAdderIterator implements Iterator {

      private final String prefix;
      private final Iterator iterator;
      public PrefixAdderIterator(String prefix,
             Iterator iterator) {
        this.prefix = prefix;
        this.iterator = iterator;
      }
      ...
      public String next() {
        return prefix+iterator.next();
      }
     ...
    }

    rather than

     List prefixedKeys = new ArrayList();
     for (String key: keys) {
      prefixedKeys.add(prefix+key);
     }

Thanks much to Ted Crossman for the idea and
contribution.

Bugs fixed/closed in 2.8.0:
http://code.google.com/p/spymemcached/issues69/detail?id=199
 (a.k.a. http://www.couchbase.org/issues/browse/SPY-48)
http://code.google.com/p/spymemcached/issues69/detail?id=134

With others which can be listed here:
http://code.google.com/p/spymemcached/issues/list

Note that Couchbase also tracks issues here:
http://www.couchbase.org/issues/browse/SPY
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (Darwin)

iEYEABECAAYFAk8cSp4ACgkQQM0/OE2fY9p5lACeKxrY5c5DsIshUDTtRnO/ENbr
jFgAnR1ygjAuKMM8prLDbKhxpMNMb2Cn
=csob
-----END PGP SIGNATURE-----

Changes from release 2.7.2 to 2.7.3

contributors
Release of 2.7.3

The 2.7.3 release is a patch update, covering just one issue
which was intended to be in 2.7.2.

It's issue 181 (also SPY-60) and has to do with continuing
to search for another server in the list provided if one
server appears to be down.

Summary of changes since the 2.6 series:
(see previous 2.7 release notes for more details)

The 2.7 series gains significant new capabilities when using
binary protocol with Membase or forthcoming updates to
memcached.

Starting with the 2.7 release, it is now possible to
instantiate a MemcachedClient from the REST interface
supported by Membase.  What this means is that if you have
one or more buckets in Membase, you can create
MemcachedClient objects to work with the buckets.  Furthermore,
if the cluster topology changes (i.e. a node is added or
removed), the client will automatically adjust to the new
topology.

This updated client also has support for other new Membase
operations, some of which will likely be in memcached
as well in a future release:
  touch - extend the expiration for a given item
  get and touch (a.k.a. gat) - get and touch an item
  getl - get and lock an item, with a lock expiration time

Bugs fixed/closed in 2.7.3:
http://code.google.com/p/spymemcached/issues/detail?id=181
 (a.k.a. http://www.couchbase.org/issues/browse/SPY-60)

Bugs fixed/closed in 2.7.2:
http://code.google.com/p/spymemcached/issues/detail?id=125
http://code.google.com/p/spymemcached/issues/detail?id=166
http://code.google.com/p/spymemcached/issues/detail?id=190
http://code.google.com/p/spymemcached/issues/detail?id=193 (post release)
http://code.google.com/p/spymemcached/issues/detail?id=195
http://code.google.com/p/spymemcached/issues/detail?id=196
http://code.google.com/p/spymemcached/issues/detail?id=201
http://code.google.com/p/spymemcached/issues/detail?id=202

Bugs fixed/closed in 2.7.1:
http://code.google.com/p/spymemcached/issues/detail?id=96
http://code.google.com/p/spymemcached/issues/detail?id=134
http://code.google.com/p/spymemcached/issues/detail?id=152
http://code.google.com/p/spymemcached/issues/detail?id=171
http://code.google.com/p/spymemcached/issues/detail?id=187

Bugs fixed/closed in 2.7:
http://code.google.com/p/spymemcached/issues/detail?id=153
http://code.google.com/p/spymemcached/issues/detail?id=172
http://code.google.com/p/spymemcached/issues/detail?id=165

With others which can be listed here:
http://code.google.com/p/spymemcached/issues/list

Note that Couchbase also tracks issues here:
http://www.couchbase.org/issues/browse/SPY
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (Darwin)

iEYEABECAAYFAk6YmOgACgkQQM0/OE2fY9quowCfcKOeei7vEKWqu8H3tK0fOHWV
X2UAoJwatM6/Ww4BI6PHHzEIT1iKrHrA
=dL3t
-----END PGP SIGNATURE-----

Changes from release 2.7.1 to 2.7.2

contributors
Release of 2.7.2

The 2.7.2 release is a patch update, including a number of new
features.

The 2.7.1 release introduced a required dependency update of
Apache commons codec.  A more elegant solution has been added
to this release so we can now use commons-code 1.3, 1.4 or 1.5.
There is also a more elegant solution to the unfortunate
incompatibility introduced in Netty, where 3.2 changed the
signature of one method.  Thanks to Martin Grotzke for this fix.

Some notable bugs fixed in this release include:
* BaseSerializingTranscode resource leak (issue 190)
* Operation class is used in un-threadsafe, unsynchronized manner
  (issue 195)
* decodeLong() would decode incorrectly and prematurely wrap
  (issue 202)

The development time experience is better starting in 2.7.1.  Classic
"buildr test" will work just as expected, but it will run only the
subset of tests that are appropriate for memcached.  Using some
environment variables, tests can be run against Membase either locally
or remotely or against a remote memcached.

Examples:

Run tests against a Membase instance on the localhost:

  buildr test SPYMC_SERVER_TYPE="membase"

Run memcached IPv4 tests and try to run IPv6 tests against the specified server:

  buildr test SPYMC_TEST_SERVER_V4="10.2.1.58"

Run a test against the specified IPv4 and IPv6 servers:

  buildr test SPYMC_TEST_SERVER_V4="10.2.1.58" SPYMC_TEST_SERVER_V6=
    "some_ipv6_addr"

Summary of changes since the 2.6 series:
(see the 2.7 release notes for more details)

The 2.7 series gains significant new capabilities when using
binary protocol with Membase or forthcoming updates to
memcached.

Starting with the 2.7 release, it is now possible to
instantiate a MemcachedClient from the REST interface
supported by Membase.  What this means is that if you have
one or more buckets in Membase, you can create
MemcachedClient objects to work with the buckets.  Furthermore,
if the cluster topology changes (i.e. a node is added or
removed), the client will automatically adjust to the new
topology.

This updated client also has support for other new Membase
operations, some of which will likely be in memcached
as well in a future release:
  touch - extend the expiration for a given item
  get and touch (a.k.a. gat) - get and touch an item
  getl - get and lock an item, with a lock expiration time

The majority of contributions to this release were
funded by Couchbase, Inc.  Thanks to the 2.7.2 contributors:

Daniel Martin (2):
      Fix concurrent access to operations objects, especially near timeouts
      Use direct buffers in TCPMemcachedNodeImpl

Martin Grotzke (1):
      Add compatibility with netty 3.2.0+.

Matt Ingenthron (2):
      No need for old debugging string in test.
      Revert "SPY-37 & SPY-38: Fixed redistribution performance issue"

Mike Wiederhold (21):
      Operations can't timeout when writing to the write buffer.
      SPY-125: Significant performance issue large number of sets
      Improved performance of write queue processing during timeouts
      Add support for commons-codec 1.3, 1.4, and 1.5
      Remove assertions that assert a completed op isn't timed out
      SPY-49: BaseSerializingTranscoder does not close resources.
      Removed unused variables in GetOperationImpl
      Change getBytes() to getData() in CASOperation
      SPY-39: Added toString() to operation heirarchy
      Added toString() functions to ConnectionFactory classes.
      SPY-47: Client object should have toString().
      SPY-54: getBulk() shouldn't log a warning when a key is not found
      Send an ack for all tap opaque messages
      Made cmd variable a byte for binary operations
      Removed a print line statement from TestConfig
      Removed extra variables in tapCustom header
      Flush the PrintWriter in TapMessagePrinter
      Don't reconnect when a tap connection finishes.
      Made vbmap in MultiKey operation synchronized
      SPY-37 & SPY-38: Fixed redistribution performance issue
      Refactored tap message classes.

sanada0670 (1):
      SPY-51: Bug in OperationImpl's decodeLong(2)

Bugs fixed/closed in 2.7.2:
http://code.google.com/p/spymemcached/issues/detail?id=125
http://code.google.com/p/spymemcached/issues/detail?id=166
http://code.google.com/p/spymemcached/issues/detail?id=190
http://code.google.com/p/spymemcached/issues/detail?id=193 (post release)
http://code.google.com/p/spymemcached/issues/detail?id=195
http://code.google.com/p/spymemcached/issues/detail?id=196
http://code.google.com/p/spymemcached/issues/detail?id=201
http://code.google.com/p/spymemcached/issues/detail?id=202

Bugs fixed/closed in 2.7.1:
http://code.google.com/p/spymemcached/issues/detail?id=96
http://code.google.com/p/spymemcached/issues/detail?id=134
http://code.google.com/p/spymemcached/issues/detail?id=152
http://code.google.com/p/spymemcached/issues/detail?id=171
http://code.google.com/p/spymemcached/issues/detail?id=187

Bugs fixed/closed in 2.7:
http://code.google.com/p/spymemcached/issues/detail?id=153
http://code.google.com/p/spymemcached/issues/detail?id=172
http://code.google.com/p/spymemcached/issues/detail?id=165

With others which can be listed here:
http://code.google.com/p/spymemcached/issues/list

Note that Couchbase also tracks some issues here:
http://www.couchbase.org/issues/browse/SPY
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (Darwin)

iEYEABECAAYFAk6X1lAACgkQQM0/OE2fY9p+RQCfcSuZe25JcJJEUFxN6PBtRjGQ
NrQAoNMPqEjZEwQZoAjomiNg004Jx19G
=jPt9
-----END PGP SIGNATURE-----

Changes from release 2.7 to 2.7.1

contributors
Release of 2.7.1

The 2.7.1 release is a patch update, including a number of new
features.  It should be compatible with all 2.7 deployments, with one
dependency update required if deployed as a Membase 'smart client'.

There are also a number of new features in this release: operation
status visibility, a built in TAP client, and new configuration
options when using Membase.

In the past, when an async operation completed, success or failure
could be determined but the reason for a success or failure wasn't
clear.  Now many of these methods return an OperationFuture instead of
simply a Future and have a new method called getStatus().  The
OperationStatus can then offer more insight as to what happened with
the operation.

This release also sports a new TAP client.  TAP is a method of either
streaming changed items or 'dumping' all items from a Membase cluster.
This allows for new ways to get information on changes occurring to, or
analyze the data from a Membase cluster.  Notably, this technique is
used in the Hadoop Sqoop integration with Membase.  You may read more
about TAP here:
http://docs.couchbase.org/membase-manual-1.7.1/membase-architecture.html
http://docs.couchbase.org/couchbase-manual-2.0/couchbase-faq.html

Another minor new feature, one can now specify a ConnectionFactory
when connecting to a Membase cluster (for either memcached or Membase
bucket types).  This allows for more specific configuration of things
like default timeout, reconnect delay, use of optimization, etc.

Some notable bugs fixed in this release include:
* ClassCastException (spymemcached issue 96)
* Bulk operations with Membase (VbucketNodeLocator)
* Made client more stable under Membase topology changes
* ASCII operations now return a false operation status on failure

The aforementioned dependency update is to bring Apache Commons Codec
up to 1.5, owing to a bug introduced in 1.4.  We had worked around
that bug, but the project decided to go back to what had been
implemented in commons-codec 1.3.  This meant we were dependent on a
very specific version of commons-codec.  We've now rolled forward
following the recommendations from Apache Commons Codec.  This
requires a dependency update.

The development time experience is better in this update.  Classic
"buildr test" will work just as expected, but it will run only the
subset of tests that are appropriate for memcached.  Using some
environment variables, tests can be run against Membase either locally
or remotely or against a remote memcached.

Examples:

Run tests against a Membase instance on the localhost:

  buildr test SPYMC_SERVER_TYPE="membase"

Run memcached IPv4 tests and try to run IPv6 tests against the specified server:

  buildr test SPYMC_TEST_SERVER_V4="10.2.1.58"

Run a test against the specified IPv4 and IPv6 servers:

  buildr test SPYMC_TEST_SERVER_V4="10.2.1.58" SPYMC_TEST_SERVER_V6=
    "some_ipv6_addr"

Summary of changes since the 2.6 series:
(see the 2.7 release notes for more details)

The 2.7 series gains significant new capabilities when using
binary protocol with Membase or forthcoming updates to
memcached.

Starting with the 2.7 release, it is now possible to
instantiate a MemcachedClient from the REST interface
supported by Membase.  What this means is that if you have
one or more buckets in Membase, you can create
MemcachedClient objects to work with the buckets.  Furthermore,
if the cluster topology changes (i.e. a node is added or
removed), the client will automatically adjust to the new
topology.

This updated client also has support for other new Membase
operations, some of which will likely be in memcached
as well in a future release:
  touch - extend the expiration for a given item
  get and touch (a.k.a. gat) - get and touch an item
  getl - get and lock an item, with a lock expiration time

The majority of contributions to this release were
funded by Couchbase, Inc.  Thanks to the 2.7.1 contributors:

Mike Wiederhold (40):
      Ascii unsupported ops give error message
      Added unit tests for get and touch
      Make sure a selector isn't canceled before reading it
      Changed all binary command opcode values to hexadecimal.
      Getl no longer removes the key from binary message.
      Getl no longer users flags field for request messages
      Removed unused import from GetAndTouchOperationImpl
      Added unit tests for touch
      Add touch, get and touch, and get and lock to MemcachedClientIF
      Fixed broken get and touch test
      ASCII get operations now return a false operation status on failure
      Add visibility into operations (status).
      Add visibility into operations (key)
      Added all memcached error codes to spymemcached.
      Removed unused import from ConfigurationProviderHTTP
      Added serial ID's to exceptions.
      Fixed issue regarding connecting to a non-existent bucket
      Removed unused imports in VBucketCacheNodeLocatorTest
      Added constructor to MemcachedClient that takes a ConnectionFactory
      Added generic to SingleElementFiniteIterator in MemcachedClient.
      Added source folder for manuel tests to Eclipse config file
      Made SyncGetTest failures less sporadic
      Changed the value size of items used in LongClientTest
      Made operation timeout longer for QueueOverflowTest
      Added tap client
      Removed unused variables in testcases.
      Refactored Operations to improve correctness of vbucket aware ops
      Made an addOperation function private in MemcachedConnection
      Fixed a bug where multi-gets didn't work with vb aware constructor
      Added a command line parameter for specifying server type
      Issue 96: ClassPathException fix
      Excluded Non-memcached tests when testing memcached
      TapOperation's shouldn't be KeyedOperations.
      Made TapTest only run against Membase.
      Made EINTERNAL and ERR2BIG errors throw an exception
      Added the ability to specify the ip address of the testing server
      Fixed issue with flags not being added properly to tap messages
      Added README.markdown.
      Added ability to do tap dump
      Tap streams now pause every 10,000 messages.

Matt Ingenthron (7):
      Adding a warmup state for nodes.
      Also check for RETRY during clone.
      Encode with commons codec more correctly.
      Ensure nodesMap updates are safe when topology changes.
      VBucketNodeLocator should not implement getSequence()
      Log warnings when retrying due to not my vbucket.
      Update commons-codec to 1.5 in .classpath for Eclipse.

Dustin Sallings (3):
      Fix dumb thing compiler warning was pointing out
      Fixed some shadowing parameter warnings.
      Compiler pointed out ignored exception. :(

Nelz Carpentier (1):
      Adding the repository needed to download netty.

Paul Burnstein (1):
      Spymemcached Issue 134: Performance fix

Vitaly Rudenya (1):
      All NodeLocator's can be reconfigured.

Bugs fixed/closed in 2.7.1:
http://code.google.com/p/spymemcached/issues/detail?id=96
http://code.google.com/p/spymemcached/issues/detail?id=134
http://code.google.com/p/spymemcached/issues/detail?id=152
http://code.google.com/p/spymemcached/issues/detail?id=171
http://code.google.com/p/spymemcached/issues/detail?id=187

Bugs fixed/closed in 2.7:
http://code.google.com/p/spymemcached/issues/detail?id=153
http://code.google.com/p/spymemcached/issues/detail?id=172
http://code.google.com/p/spymemcached/issues/detail?id=165

With others which can be listed here:
http://code.google.com/p/spymemcached/issues/list
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (Darwin)

iEYEABECAAYFAk5TzBQACgkQQM0/OE2fY9orXgCgjndXOzGYyIWh7jcNuK8yDFCY
VNAAniTc/ItkjlbTOBnhlK4e/FMpeOZC
=ejy9
-----END PGP SIGNATURE-----

Changes from release 2.6rc2 to 2.7

contributors
Release of 2.7

Changes since the 2.6 series:

The 2.7 series gains significant new capabilities when using
binary protocol with Membase or forthcoming updates to
memcached.

Starting with the 2.7 release, it is now possible to
instantiate a MemcachedClient from the REST interface
supported by Membase.  What this means is that if you have
one or more buckets in Membase, you can create
MemcachedClient objects to work with the buckets.  Furthermore,
if the cluster topology changes (i.e. a node is added or
removed), the client will automatically adjust to the new
topology.

This updated client also has support for other new Membase
operations, some of which will likely be in memcached
as well in a future release:
  touch - extend the expiration for a given item
  get and touch (a.k.a. gat) - get and touch an item
  getl - get and lock an item, with a lock expiration time

See http://www.couchbase.org/documentation for further
details.

Many other minor changes were introduced in support of
this work, like handling temporary failures.  Notably,
this affects testing in that you now need a Membase
server running locally with a specific username
and password.  This is a limitation planned for removal
in future releases.

Some of these changes affected interfaces, which is why
the version number has been raised to 2.7 even though
2.6 was just recently released.

To support this new functionality, there are a few new
runtime dependencies:
netty 3.1.5 GA
jettison 1.1
Apache commons-codec 1.4

These are only required if you are using the new REST
interface and topology changes from Membase.

The majority of contributions to this release were
funded by Couchbase, Inc.  Thanks to the contributors:

Alexander Sokolovsky (9):
      Integrated jvbucket
      Added vbucket configuration parser from JSON.
      Added bucket monitor with response handler.
      Add a configuration provider for bucket updates.
      Added VbucketNodeLocator, keyed operation handling.
      Allow MemcachedClient and connections to be reconfigurable.
      Bugfixing of NOT_MY_VBUCKET handling
      Bugfixing not_my_vbucket occurs on optimized set
      Unit test and javadoc additions.

Matt Ingenthron (15):
      Buildfile changes to support Maven 2 artifact upload.
      If it is membase, do not test some things.
      Set the status when receiving ERR_NOT_MY_VBUCKET.
      Add both hostnames and IPs to the nodes map.
      Assert the node must exist when finding primary.
      Added check for moxi when testing.
      Refactor: not a collection of vbuckets, more of a configuration.
      Add a ConfigType via an enum.
      Allow config to handle cache as well.
      Change client ctor to detect vbucket usage from server.
      Extracted HTTP auth header to common place.
      Remove standard Authenticator and replace with simple auth header.
      Added logging for manipulation of nodesMap in VBucketLocator.
      Change ConfigType enum for clarity.
      Change a Bucket instance variable to final.

Mike Wiederhold (5):
      Added TEMP_FAIL handling to set operations
      Added touch operation
      Added getl operation
      Added Get And Touch Command
      Fixed .classpath file to include all dependencies

Bugs fixed/closed:
http://code.google.com/p/spymemcached/issues/detail?id=153
http://code.google.com/p/spymemcached/issues/detail?id=172
http://code.google.com/p/spymemcached/issues/detail?id=165

With others which can be listed here:
http://code.google.com/p/spymemcached/issues/list
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (Darwin)

iEYEABECAAYFAk3vVV4ACgkQQM0/OE2fY9ovDQCfa5vI52rB5V55i2W4xmMaBjWk
Du8An3MI92f4aNpDZwf8OcCVGW1QP/o7
=NTH8
-----END PGP SIGNATURE-----

Changes from release 2.6rc1 to 2.6rc2

contributors
Prerelease of 2.6

Changes since the 2.5 series:

The major change, and the reason for the version bump, is that timeout
handling has been improved.  Previously, timed out operations may have
actually been written to the network even after they'd timed out.  The
change required some small API changes (generally forward compatible
so minor version bump only) and adds a new operation state of timedout.

Other changes include performance enhancements, transcoder enahncements
and improvements in the continuious timeout counter to be per
connection rather than for the entire MemcachedClient.  The library is
now easier to use in Spring as well, owing to a FactoryBean contribution.

Between rc1 and rc2, a major issue (issue 175) with the
KetamaNodeLocator was found, so some changes were backported along with
the fix.

(notes updated from rc1)

Contributors:
    19  Matt Ingenthron
     9  Blair Zajac
     3  Dustin Sallings
     3  Boris Partensky
     1  Eran Harel
     1  Andrey Kartashov
     1  ddlatham
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (Darwin)

iEYEABECAAYFAk21l4EACgkQQM0/OE2fY9qP7gCgyLSWhBmxq1fMF4A6XaAlZ6Tb
xbsAnjQ6U9MMu9UIbN5wnG3sJ7TSvdcq
=m+F6
-----END PGP SIGNATURE-----

Changes from release 2.6 to 2.6rc1

contributors
Prerelease of 2.6

Changes since the 2.5 series:

The major change, and the reason for the version bump, is that timeout
handling has been improved.  Previously, timed out operations may have
actually been written to the network even after they'd timed out.  The
change required some small API changes (generally forward compatible
so minor version bump only) and adds a new operation state of timedout.

Other changes include performance enhancements, transcoder enahncements
and improvements in the continuious timeout counter to be per
connection rather than for the entire MemcachedClient.

Contributors:
    10  Matt Ingenthron
     9  Blair Zajac
     3  Boris Partensky
     3  Dustin Sallings
     1  Andrey Kartashov
     1  ddlatham
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (Darwin)

iEYEABECAAYFAk1az2AACgkQQM0/OE2fY9r6PQCgmN56nm0E9qYL4VSuJcdGC2R9
pxkAniaHQ53J8EsiAbAyHPsbLIxe06jn
=kXof
-----END PGP SIGNATURE-----

Changes from release 2.5rc3 to 2.6

contributors
Release of 2.6

Changes since the 2.5 series:

The main change in 2.6 is logic with respect to timeout handling.
Timeout default is now 2500ms, rather than the old default of
1000ms.  The reason for this change is that a single network
retransmit could cause a longer than 1000ms wait, causing an
exception in the client application.

Additionally, some changes were integrated that help the client to
recover faster when a network connection problem does occur.  These
changes required interface changes, which is why the version has
been bumped to 2.6.

This change also allows client code to be able to tell if an
operation has timed out after being sent over the network or if
it has timed out before even being written to the network.

See issue 136 for more discussions on this topic.

Another feature relating to timeouts is that the continuous
timeout feature introduced in 2.5 has been moved to the connection
level, rather than for an entire client.  The default is that after
1000 timeout operations, a connection will be dropped and
reestablished if possible.  This addresses situations where a server
may fail, but the connection is not reset.

There are also performance improvements and new transcoder abilities
with asyncGetBulk now included.

One other significant bug fixed in this release was a problem with
finding an active node when there is a failed node and the
KetamaNodeLocator is in use.  With only two nodes, the previous
implementation had a 25% chance of not finding a working node
and failing with a timeout.  This has been changed such that now
there is a less than 1% chance it will not find a working node.

It should be noted that spy's algorithm here may be different
than libketama.  This is tracked under issue 117.  This is not a
new change however, and it's never been reported from running in
production.

Thanks much to all of the new contributors to this release!  Thanks
in particular to Taso of Concur who spent much time writing tests
to isolate issue 175.

Andrey Kartashov (1):
      Move continuous timeout counter to individual connections.

Blair Zajac (9):
      Use a private static final byte array for "\r\n" instead of always
        converting the string into a byte array.
      No need to call MessageDigest#reset() on a brand new MessageDigest.
      Use a faster method to get a MD5 MessageDigest instance.
      Delete a duplicate unit test.
      Fix compilation with JDK 1.5.
      Add an iterator that returns a single element forever.
      Allow per-key transcoders to be used with asyncGetBulk().
      Minor performance improvement for bulk gets.
      Tiny performance improvement.

Boris Partensky (3):
      return partial data from timed out getBulk
      plug potential file descriptor leak
      support timeout based disconnects for bulk ops

Dustin Sallings (5):
      Some minor fixes to make eclipse happy with the code again.
      Some import cleanups.
      Avoid potential NPE as reported by eclipse.
      Compilation fix after spring de-generification.
      Removed a bit of dead test code.

Eran Harel (1):
      Spring FactoryBean support.

Luke Lappin (1):
      Do not use generics with Spring Factory Bean, be 2.5 compatible.

Matt Ingenthron (19):
      Changed ports in tests for non-listening to something higher.
      Do not write timedout operations to the MemcachedNode.
      Increased default timeout to 2500ms.
      Test for timeout from operation epoch.
      Test fixes after adding new timeout logic.
      Fix for stats sizes test.
      Recognize operation may be null at times.  e.g.: flush
      Add a TIMEDOUT state to ops and make callbacks correct.
      Fixes to testSyncGetTimeouts.
      Catch RuntimeException instead.
      Changed transcoder logging to more appropriate defaults.
      Warn when redistribute cannot find another node.
      Fixed small log typo.
      Added ability to see if op unsent but timedout.
      Fixed minor comment formatting.
      Fixed cancellation issue.
      Separate the KetamaIterator for future dynamic configuration.
      Search more with the KetamaIterator.
      Increase the maximum size allowed.  Issue 106.

ddlatham (1):
      Support daemon mode for TranscodeService threads.

Bugs fixed/closed:
http://code.google.com/p/spymemcached/issues/detail?id=106
http://code.google.com/p/spymemcached/issues/detail?id=136
http://code.google.com/p/spymemcached/issues/detail?id=150
http://code.google.com/p/spymemcached/issues/detail?id=164
http://code.google.com/p/spymemcached/issues/detail?id=175

With others which can be listed here:
http://code.google.com/p/spymemcached/issues/list
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (Darwin)

iEYEABECAAYFAk3MQXoACgkQQM0/OE2fY9oxYwCePLecOdyQrs3zebXBBWvpRcD/
DmwAnRqlAkHaxH9AFlRmDzQCD66E7isv
=Uljc
-----END PGP SIGNATURE-----

Changes from release 2.5rc2 to 2.5rc3

contributors
Prerelease of 2.5

Changes since the 2.4 series:

The main new feature of the 2.5 release is support for SASL auth
to go along with the same feature in the memcached 1.4.3 and later
servers.

There is also a new feature which can be used in conjunction with the
failure cancel mode to close all connections to memcached servers if
there are timeouts against a server.  This helps to recover from
situations where a memcached server in the list may hard fail.

The reason for rc3, and the significant changes over rc2, is that
a number of issues were found where operations could be sent without
allowing SASL to complete.

Contributors:

     2	Ahn Seong Hwa
     3	Blair Zajac
    25	Dustin Sallings
     2	Kevin Lafferty
     1	Kristian Eide
    11	Matt Ingenthron
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (Darwin)

iEYEABECAAYFAkuzsvIACgkQQM0/OE2fY9p7ewCfTmDHahx2r5nQZZGp0wcwHXuZ
eMEAn3eeb3VSeyyloOL5uIi8o5+DKl1x
=4zvl
-----END PGP SIGNATURE-----

Changes from release 2.5rc1 to 2.5rc2

contributors
Prerelease of 2.5

Changes since the 2.4 series:

The main new feature of the 2.5 release is support for SASL auth
to go along with the same feature in the memcached 1.4.3 and later
servers.

There is also a new feature which can be used in conjunction with the
failure cancel mode to close all connections to memcached servers if
there are timeouts against a server.  This helps to recover from
situations where a memcached server in the list may hard fail.

Contributors:

     7  Dustin Sallings
     5  Matt Ingenthron
     2  Ahn Seong Hwa
     1  Blair Zajac
     1  Kristian Eide
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (Darwin)

iEYEABECAAYFAkuaxYIACgkQQM0/OE2fY9oosgCghESfFPGt/WX4GL+MPyq/xkjh
9JsAnRKQHN7AoOfASlHit7Eg7EMThgLv
=WS9h
-----END PGP SIGNATURE-----

Changes from release 2.5-ns to 2.5rc1

contributors
Prerelease of 2.5

Changes since the 2.4 series:

The primary new thing here is SASL support.  While the implementation
isn't exactly what I want, I think the API is good enough to be
considered stable.

Contributors:

    12  Dustin Sallings
     2  Blair Zajac
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (Darwin)

iEYEABECAAYFAkr9qa4ACgkQeWDnv0PlnVRW2wCggk3rJbBTKKVQLN5Fc4ygh7tK
OUEAoIft6/2E6E5/cWRFGEySNQaqtN35
=R0DX
-----END PGP SIGNATURE-----

Changes from release 2.5 to 2.5-ns

contributors
Prerelease of spymemcached 2.5 with NorthScale fixes.

These will be added to spymemcached soon for review.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (Darwin)

iEYEABECAAYFAkuePiQACgkQQM0/OE2fY9rQEwCePbWqFNz+MgGit3Hj7h/JHsIB
MucAoNH89AAmhMRoug9Wc2nx69HHH2QJ
=3PgX
-----END PGP SIGNATURE-----

Changes from release 2.4rc1 to 2.5

contributors
Release of 2.5

Changes since the 2.4 series:

The main new feature of the 2.5 release is support for SASL auth
to go along with the same feature in the memcached 1.4.3 and later
servers.

There is also a new feature which can be used in conjunction with the
failure cancel mode to close all connections to memcached servers if
there are timeouts against a server.  This helps to recover from
situations where a memcached server in the list may hard fail.

Also notable is this commit:
cba26c1 If the String value of the socket address starts with a /, remove it.

This does affect Ketama hashing, as it was found there could be some
occasional mismatch with libketama.  A much larger test was added
and to a pretty large degree, compatibility with libketama's hashing is
assured.  Proceed with caution if you'll be running a mixed environment
of 2.5 and pre-2.5 spymemcached clients.  To get the old behavior by
default, a custom interface is easily implemented.

Additionally, there have been a number of bug fixes, comment cleanups
some new tests, and some consistency fixes.

Changes since 2.4.2:

Ahn Seong Hwa (2):
      New TCP connection timeout feature; if server fails completely, d/c.
      fix for useless check statement that is for continuous timeout exception counter

Blair Zajac (3):
      Be more generous in the strings that AddrUtil#getAddresses() will parse.
      Fix AddrUtilTest#testIPv6Host() hostname assertion.
      Fix consistency issue in ConnectionFactoryBuilder.isDaemon()

Dustin Sallings (19):
      Beginnings of SASL support.
      A slightly better model for SASL auth.
      Authentication should allow specification of a mechanism.
      Refactored broadcast to allow for node selection.
      Working multi-step auth.
      Refactored SASL auth for greater reuse.
      Added support for listing SASL mechanisms.
      Reformatted callback handler.
      Don't throw away an exception.
      Use the socket address as the realm.
      Better auth API, handles connection drops.
      Log the bug that causes reconnection on first connect.
      Replaced Long nanos with long millis for op queue block offer timeout.
      Ensure the factory builder can be used to specify enqueue block size.
      Get rid of special constructors for op enqueue timeouts.
      Do blocking inserts from the cache loader test.
      Auth fix for mechanisms that have an initial response.
      If the String value of the socket address starts with a /, remove it.
      A larger libketama extract for compatibility testing.

Greg Kim (1):
      Implementing read-only methods in MemcachedNodeROImpl - issue86

Kristian Eide (1):
      Allow user-specified wait time for availability of queue space.

Matt Ingenthron (14):
      Invert the ConnectionFactoryBuilderTest to go with new logic.
      Document unexpected incr/decr behavior.  Issue 48.
      Various Javadoc completeness.
      Docs for path to FailureModes on DefaultConnectionFactory. Issue 115.
      Clarify Future, issue 63.
      Clarify what is planned after a disconnect.
      Enhance MemcachedNode to know whether auth should happen.
      Changed AuthTest description to match reality.
      Manual test to ensure correct connection handling with SASL.
      Enhanced ConnectionFactoryBuilder test for auth.
      Minor fixes to SASL reconnect test.
      Handle auth failures more gracefully; maximum failures.
      Log operation failures as potential auth failures.
      Actually use the args to SASLConnectReconnect; shutdown nicely.

Bugs fixed/closed:
http://code.google.com/p/spymemcached/issues/detail?id=48
http://code.google.com/p/spymemcached/issues/detail?id=115
http://code.google.com/p/spymemcached/issues/detail?id=63
http://code.google.com/p/spymemcached/issues/detail?id=112
http://code.google.com/p/spymemcached/issues/detail?id=111
http://code.google.com/p/spymemcached/issues/detail?id=109
http://code.google.com/p/spymemcached/issues/detail?id=78
http://code.google.com/p/spymemcached/issues/detail?id=104

With others which can be listed here:
http://code.google.com/p/spymemcached/issues/list
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (Darwin)

iEYEABECAAYFAkvDyG4ACgkQQM0/OE2fY9o/BwCfZBcaORvnKuLFBtjsOcZmSiI9
IFEAnArde+Jn1xkICom2MmQg6h3rFZdz
=1oIc
-----END PGP SIGNATURE-----

Changes from release 2.4.2 to 2.4rc1

contributors
Prerelease of 2.4

Changes since the 2.3 series.

Bug Fixes:

* Memcached node tracking.
  When a timeout occurs on an operation, the exception indicates the
  server node that was the intendend recipient of the operation.
* Fixed reconnect loss on multiple simultaneous connection failures.
  This is a rare occurrence, but the wrong thing would happen if two
  simultaneous reconnects were requeued for any reason.
* Fixed a race condition that occurred when tearing down a connection.
  There was a case where shutting down a connection would cause an NPE
  to get logged due to the a race between a selector check and the
  selector being shut down.  Unlikely to affect a running app, but
  it was still wrong.
* Handle initial connect failures.
  There were rare cases where an async connect would error instantly
  on the first attempt, but that connect wouldn't be retried.

Features:

* ConnectionFactoryBuilder
  Rather than having to build a custom subclass of
  DefaultConnectionFactory to override behaviors, you can now use a
  ConnectionFactoryBuilder to easily assemble a ConnectionFactory as
  you want it.
* Mutation-only CAS mutator
  Previously, the CASMutator required an initial object to use if the
  object you were attempting to mutate wasn't found.  Now you can
  specify this as NULL and CASMutator will *only* mutate an existing
  object, but never create a new one.
* CacheLoader
  CacheLoader provides a couple of convenient mechanisms for
  efficiently loading bulk data.  I've seen many benchmarks trying to
  see how fast data can go into memcached through the client (as
  opposed to normal usage), but they do things to make it
  unnecessarily slow.  This should satisfy both benchmarking
  requirements and legitimate bulk loading requirements.

Performance Enhancements:

* Disable Nagle Algorithm by Default
  The usage of the Nagle algorithm (tcpNoDelay) is now configurable
  and is configured off by default (Nagle algorithm off = tcpNoDelay
  on).  This should be more optimal for most configurations.
* Multi-set Escalation in the Binary Protocol
  With no changes to the API, multiple sequential sets will be
  escalated into a multi-set operation similar to multi-get.  In a
  bulk load test, this is generally around 2x faster.
* Asynchronous Transcoding Service
  A transcoder can request a transcoder service (effectively a
  threadpool) to asynchronously decode cache response objects both
  outside of the API and outside of the caller thread.

Contributors:

    30  Dustin Sallings
     1  Joseph Hart
     1  Wang Nan
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (Darwin)

iEYEABECAAYFAkq6ppQACgkQeWDnv0PlnVRwUgCggSCV7VelTY946bpFJuRgPhtJ
FC8Ani097J6tQN55vuq8u0p9qSU+ALI0
=NGik
-----END PGP SIGNATURE-----

Changes from release 2.4.1 to 2.4.2

contributors
Release 2.4.2

Changes since 2.4.1:

Dustin Sallings (4):
      StorageListener should be public.
      Removed a debugging stdout thing.
      Handle operations that are writing and reading at the same time.
      Allow MemcachedClient and AsciiOperationFactory extensibility.

Kevin Lafferty (2):
      MemcachedConnection constructor should catch SocketException
      Support byte arrays in WhalinV1Transcoder.

Matt Ingenthron (1):
      Some javadoc cleanup in MemcachedClient examples.

Bugs fixed:

    http://code.google.com/p/spymemcached/issues/detail?id=98
    http://code.google.com/p/spymemcached/issues/detail?id=68
    http://code.google.com/p/spymemcached/issues/detail?id=83
    http://code.google.com/p/spymemcached/issues/detail?id=74
    http://code.google.com/p/spymemcached/issues/detail?id=95
    http://code.google.com/p/spymemcached/issues/detail?id=97
    http://code.google.com/p/spymemcached/issues/detail?id=94
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (Darwin)

iEYEABECAAYFAkrnPD0ACgkQeWDnv0PlnVQbfQCfYo5nY18nJD47xF/wgIibIX/3
ErYAn1iFb2oJzIXYagDftjRweLekwgHY
=1DIS
-----END PGP SIGNATURE-----

Changes from release 2.4 to 2.4.1

contributors
Release 2.4.1

Changes since 2.4:

* Build system now targets java 1.5.
  Java 1.5 is EOL'd at the end of this month, but I don't do anything
  special that would make it *not* work there.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (Darwin)

iEYEABECAAYFAkrWGpwACgkQeWDnv0PlnVS7UACgju74mIRLgqTTQE1WZIut5LC3
U4EAoKa8kOConX0SX5eFXJQQNioIk3bQ
=dLTz
-----END PGP SIGNATURE-----

Changes from release 2.3rc1 to 2.4

contributors
Version 2.4

Changes since the 2.3 series.

Bug Fixes:

* Memcached node tracking.
  When a timeout occurs on an operation, the exception indicates the
  server node that was the intendend recipient of the operation.
* Fixed reconnect loss on multiple simultaneous connection failures.
  This is a rare occurrence, but the wrong thing would happen if two
  simultaneous reconnects were requeued for any reason.
* Fixed a race condition that occurred when tearing down a connection.
  There was a case where shutting down a connection would cause an NPE
  to get logged due to the a race between a selector check and the
  selector being shut down.  Unlikely to affect a running app, but
  it was still wrong.
* Handle initial connect failures.
  There were rare cases where an async connect would error instantly
  on the first attempt, but that connect wouldn't be retried.
* Sequence number wrapping bug.
  If you sent more than 2 billion or so requests to a node, the client
  would find itself in an infinite loop trying to cmoe up with a new
  opaque value.
* Suboptimal back-off algorithm.
  The previous back-off algorithm wouldn't create a reasonable
  reconnect curve.  The new one is more gradual and has a configurable
  maximum ceiling.

Features:

* ConnectionFactoryBuilder
  Rather than having to build a custom subclass of
  DefaultConnectionFactory to override behaviors, you can now use a
  ConnectionFactoryBuilder to easily assemble a ConnectionFactory as
  you want it.
* Mutation-only CAS mutator
  Previously, the CASMutator required an initial object to use if the
  object you were attempting to mutate wasn't found.  Now you can
  specify this as NULL and CASMutator will *only* mutate an existing
  object, but never create a new one.
* CacheLoader
  CacheLoader provides a couple of convenient mechanisms for
  efficiently loading bulk data.  I've seen many benchmarks trying to
  see how fast data can go into memcached through the client (as
  opposed to normal usage), but they do things to make it
  unnecessarily slow.  This should satisfy both benchmarking
  requirements and legitimate bulk loading requirements.
* KetamaNodeLocator is more configurable.
  The node data ketama uses for building a hash is configurable now in
  an effort to make consistent hashing work between java and C#.

Performance Enhancements:

* Disable Nagle Algorithm by Default
  The usage of the Nagle algorithm (tcpNoDelay) is now configurable
  and is configured off by default (Nagle algorithm off = tcpNoDelay
  on).  This should be more optimal for most configurations.
* Multi-set Escalation in the Binary Protocol
  With no changes to the API, multiple sequential sets will be
  escalated into a multi-set operation similar to multi-get.  In a
  bulk load test, this is generally around 2x faster.
* Asynchronous Transcoding Service
  A transcoder can request a transcoder service (effectively a
  threadpool) to asynchronously decode cache response objects both
  outside of the API and outside of the caller thread.

Contributors:

    40  Dustin Sallings
     1  Joseph Hart
     1  Lewis Zimmerman
     1  Wang Nan
     1  ciaranj
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (Darwin)

iEYEABECAAYFAkrU6jwACgkQeWDnv0PlnVTvRQCfRnwYXIM/ELclluJ2r9t/eLnm
GXsAoI/FFr8b3HN50IlPYFr/OBTtWc/8
=T4x/
-----END PGP SIGNATURE-----

Changes from release 2.3.1 to 2.3rc1

contributors
Changes since 2.2:

* A Map interface to memcached
    This is somewhat limited, of course, in that you obviously can't
    list all of the mappings, but you can replace many Map
    usages with a memcached backed map.

* Failure Modes
    There are now three failure modes to choose from so you can decide
    what you want to do in the case of a node failure. (see
    FailureMode in the documentation for more details).

* Connection Observation
    You can register for callbacks that will notify you when a node
    goes up or down.  This is useful for things like notifying
    monitoring systems, or preventing a system from starting up until
    a required minimum number of memcached servers come online.

* Misc bug fixes and accessibility to memcached functionality.

Contributors:

    51  Dustin Sallings
     1  Nick Brachet
     1  Valeri Felberg
     1  raykrueger
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (Darwin)

iEYEABECAAYFAkmkjM4ACgkQeWDnv0PlnVSBcwCdGOGqHn2/NDf5jsmzlM5wTOtN
olAAoIpgb/0uUUCrU1sTpCXa3UX+R3Ly
=f8kU
-----END PGP SIGNATURE-----

Changes from release 2.3 to 2.3.1

contributors
Release 2.3.1

Changes since 2.3:

* Fixed connection observeration.
  There was a condition where an exception could occur that wouldn't
  be tracked properly.  There's no automated test for this, but a test
  was constructed to manually verify the behavior with different
  server failure conditions.

* Fixed stat parsing for some stats.
  Tests were added to confirm that both stat responses that don't
  begin with STAT and stat values that contain spaces are handled
  correctly.

* Honor transcoder sizes.
  This adds a new requirement on the transcoder API to specify how
  many bytes the transcoder can store or read.  This both allows small
  transcoders to put size constraints in that will immediately throw
  an IllegalArgumentException when a result is too large to possibly
  work as well as allowing users to customize their memcached
  instances to allow for larger than normal objects.

Contributors:

     4  Dustin Sallings
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (Darwin)

iEYEABECAAYFAknU3IsACgkQeWDnv0PlnVTpggCeP5eeyreCoZxG91G/BqHCuTnw
SCYAmgM37FG/pVg3VqsREqEuR4z64Vgo
=+IGM
-----END PGP SIGNATURE-----

Changes from release 2.2rc2 to 2.3

contributors
Release 2.3.

Changes since 2.2:

* A Map interface to memcached
    This is somewhat limited, of course, in that you obviously can't
    list all of the mappings, but you can replace many Map
    usages with a memcached backed map.

* Failure Modes
    There are now three failure modes to choose from so you can decide
    what you want to do in the case of a node failure. (see
    FailureMode in the documentation for more details).

* Connection Observation
    You can register for callbacks that will notify you when a node
    goes up or down.  This is useful for things like notifying
    monitoring systems, or preventing a system from starting up until
    a required minimum number of memcached servers come online.

* Misc bug fixes and accessibility to memcached functionality.

Contributors:

    54  Dustin Sallings
     2  raykrueger
     1  Nick Brachet
     1  Valeri Felberg
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (Darwin)

iEYEABECAAYFAknBXjQACgkQeWDnv0PlnVQvogCgy6VzHZgtr/Q+J/y8dLR84CYb
+nwAn2VflMFw63uAO8Tr0Q6jZm1kifAk
=+GSJ
-----END PGP SIGNATURE-----

Changes from release 2.2rc1 to 2.2rc2

contributors
RC for 2.2.

Changes since 2.1:

* Data decoding occurs in caller threads instead of IO thread.
 This should greatly improve performance by spreading out the load to
 more threads. (Kristian Eide)
* MemcachedClientIF is added as an interface the client represents.
 This allows a client making use of the interface to mock the memcached
 interaction for better test coverage (Nelz)
* Binary protocol stat support (protocol wasn't complete until October 19).
* Async incr/decr with no default (Nick Brachet)
* Whalin V1 transcoder (Boris Partensky)
* Removed delete with hold support (pulled from server in 1.3).
* Miscellaneous bug fixes.

Contributors:

   19  Dustin Sallings
    2  Boris Partensky
    2  Kristian Eide
    2  Nelz
    2  Nick Brachet
    1  Robey Pointer
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (Darwin)

iEYEABECAAYFAkkChFoACgkQeWDnv0PlnVQ36ACguT7R5yJyj3hjB7RjC0yo5jUI
TNwAmgJwlEFQXeIyJNA+tbA6osB4SeL9
=WvyM
-----END PGP SIGNATURE-----

Changes from release 2.2 to 2.2rc1

contributors
RC for 2.2.

Changes since 2.1:

* Data decoding occurs in caller threads instead of IO thread.
  This should greatly improve performance by spreading out the load to
  more threads. (Kristian Eide)
* MemcachedClientIF is added as an interface the client represents.
  This allows a client making use of the interface to mock the memcached
  interaction for better test coverage (Nelz)
* Miscellaneous bug fixes.

Contributors:

     6  Dustin Sallings
     2  Kristian Eide
     2  Nelz
     1  Nick Brachet
     1  Robey Pointer
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (Darwin)

iEYEABECAAYFAkjlplUACgkQeWDnv0PlnVTeUQCfd20dAc5DNt+klr4hTkgoeImq
wroAn0YWFLwQMqSW5IQSVW8Ub/IrwoTW
=a9zq
-----END PGP SIGNATURE-----

Changes from release 2.1rc3 to 2.2

contributors
Changes since 2.1:

* Data decoding occurs in caller threads instead of IO thread.
  This should greatly improve performance by spreading out the load to
  more threads. (Kristian Eide)
* MemcachedClientIF is added as an interface the client represents.
  This allows a client making use of the interface to mock the memcached
  interaction for better test coverage (Nelz)
* Binary protocol stat support (protocol wasn't complete until October 19).
* Async incr/decr with no default (Nick Brachet)
* Whalin V1 transcoder (Boris Partensky)
* Stats subcommands are now supported.
* Removed delete with hold support (pulled from server in 1.3).
* Miscellaneous bug fixes.

Contributors:

    22  Dustin Sallings
     2  Boris Partensky
     2  Kristian Eide
     2  Nelz
     2  Nick Brachet
     1  Robey Pointer
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (Darwin)

iEYEABECAAYFAkkJR8sACgkQeWDnv0PlnVR6tgCfZIwI3cZRRUsrR8ECQpO/rwYU
pCYAn2BKDsOJw0q/8MzvUo/PqIRn7LkD
=YTZN
-----END PGP SIGNATURE-----

Changes from release 2.1rc2 to 2.1rc3

contributors
2.1rc3 includes a couple bug fixes and a convenience feature:

1) The three internal queues can be sized individually.
2) Fixed an elusive NPE in a partial read in bin.
3) Brought in Nelz' consistent hash convenience factory.

Regarding #1, it's pretty easy to overflow a read queue by having a
giant write queue such that the write queue's short commands going out
can get drained fairly quickly and set up for read, but there's no
room for the reads.  With new connection factory methods, it's both
easy to simulate that as well as size appropriately for your
application in such a way that might avoid it.  The defaults should
probably be fine for everyone, of course.

The effect of #2 was mostly that one of my tests occasionally failed.
It was a real bug though and would've sucked for someone someday.

The KetamaConnectionFactory can be used place of
DefaultConnectionFactory to get a stock ketama setup.  I don't
particularly like the KETAMA_HASH (md5), but the goal is to have a few
configurations on the shelf that one can choose from.

Changes from release 2.1rc1 to 2.1rc2

contributors
A second release candidate for 2.1.

This is basically bug fixes and doc updates.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.8 (Darwin)

iEYEABECAAYFAkgqiw4ACgkQeWDnv0PlnVTLLwCeJNr2syXS0ialsbxYh45BV1Un
HPQAn1gHF6MnZuInUCbXgrnh3tQDAJeR
=Gts8
-----END PGP SIGNATURE-----

Changes from release 2.1 to 2.1rc1

contributors
Release candidate for a 2.1 release.

Main features since 2.0:

* Operation timeouts for blocking operations.
* Support for append and prepend.
* Optional Whalin compatible transcoder.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.8 (Darwin)

iEYEABECAAYFAkgmpeMACgkQeWDnv0PlnVSQZACgmvWGRgeWfhTUj71uKsTw3FcF
S0YAoKRle6INqcUksxITjfyeBmJHG3Dp
=A/kj
-----END PGP SIGNATURE-----

Changes from release 2.0.2 to 2.1

contributors
2.1 release

Main features since 2.0:

* Operation timeouts for blocking operations.
* Support for append and prepend.
* Optional Whalin compatible transcoder.
* Canned connection factory for Ketama compatible consistent hashing.
* More tweakability with respect to operation queue sizes.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (Darwin)

iEYEABECAAYFAkg+K0UACgkQeWDnv0PlnVRBTgCcCCAa7/XJej8fbDJfcXJ5VijY
twIAn3ujjpt1bdVlJUhmyb847vIzEfOk
=t9ek
-----END PGP SIGNATURE-----

Changes from release 2.0.1 to 2.0.2

contributors
Binary protocol updates.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.8 (Darwin)

iEYEABECAAYFAkgYKl0ACgkQeWDnv0PlnVR+8QCfQfdAZUWrvys6dk4rAyZmsbqM
WxwAn2VcyPEjp8A4uh0vOZR1SkoJj+nx
=wEoe
-----END PGP SIGNATURE-----

Changes from release 2.0 to 2.0.1

contributors
Some minor post-2.0 fixes.

* Binary protocol changes re alignment (as released in memcached 1.3.0)
* More input validation when constructing a client.
* Transcoder flag consistency.
* More tests
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.8 (Darwin)

iEYEABECAAYFAkfx0PMACgkQeWDnv0PlnVTBZwCgzG1X1H6gzLE9BFS7XQkNSFqy
g2UAn1dtsFf5fDuDplULfIWSBY2Rsfuu
=Ycwi
-----END PGP SIGNATURE-----

Changes from release 1.4 to 2.0

contributors
2.0 has been a long time coming.

The initial reason for it to exist was protocol abstraction (specifically to
implement the binary protocol).  The slowness of the binary protocol release
has kept this dangling for quite a while.

Although there still isn't a released binary server, I want to get this release
out because there are a lot of other good things that have happened since:

 * CAS
 * Hash implementations and tests
 * node location algorithms (e.g. ketama consistent hashing)
 * Lots of fixes.

There are still things to do, but much of what people have been asking for can
be found within. this release and all of the bugs that have been reported
to-date have been fixed.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.8 (Darwin)

iEYEABECAAYFAkfTlSMACgkQeWDnv0PlnVRUWACgnmNlRgwW8vd4/+LD5TvpYTcT
FnAAn1PeBUmqOr0eCpIVppsU14R1pbRm
=2k6j
-----END PGP SIGNATURE-----

Changes from release 1.3.1 to 1.4

contributors
release 1.4

Changes from release 1.3 to 1.3.1

contributors
release 1.3.1

Changes from release 1.2 to 1.3

contributors
release 1.3

Changes from release 1.1 to 1.2

contributors
release 1.2

Changes from release 1.0.44 to 1.1

contributors
release 1.1

Changes from release 1.0.43 to 1.0.44

contributors
release 1.0.44

Changes from release 1.0.42 to 1.0.43

contributors
release 1.0.43

Changes from release 1.0.41 to 1.0.42

contributors
release 1.0.42

Changes from release 1.0.40 to 1.0.41

contributors
release 1.0.41

Changes from release 1.0.39 to 1.0.40

contributors
release 1.0.40

Changes from release 1.0.38 to 1.0.39

contributors
release 1.0.39

Changes from release 1.0.37 to 1.0.38

contributors
release 1.0.38

Changes from release 1.0.36 to 1.0.37

contributors
release 1.0.37

Changes from release 1.0.34 to 1.0.36

contributors
release 1.0.36

Release 1.0.34

contributors
release 1.0.34