Skip to content

Tags: nmpdev/java-memcached-client

Tags

2.6rc1

Toggle 2.6rc1's commit message

Verified

This tag was signed with the committer’s verified signature.
ingenthr Matt Ingenthron
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

2.5

Toggle 2.5's commit message

Verified

This tag was signed with the committer’s verified signature.
ingenthr Matt Ingenthron
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<Boolean>, 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

2.5rc3

Toggle 2.5rc3's commit message

Verified

This tag was signed with the committer’s verified signature.
ingenthr Matt Ingenthron
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

2.5rc2

Toggle 2.5rc2's commit message

Verified

This tag was signed with the committer’s verified signature.
ingenthr Matt Ingenthron
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

2.5rc1

Toggle 2.5rc1's commit message
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

2.4.2

Toggle 2.4.2's commit message
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

2.4.1

Toggle 2.4.1's commit message
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.

2.4

Toggle 2.4's commit message
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

2.4rc1

Toggle 2.4rc1's commit message
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

2.3.1

Toggle 2.3.1's commit message
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