Skip to content

Tags: bilal/java-memcached-client

Tags

2.8.1-SNAPSHOT

Toggle 2.8.1-SNAPSHOT's commit message

Verified

This tag was signed with the committer’s verified signature.
ingenthr Matt Ingenthron
Development builds of 2.8.1.

2.8.0

Toggle 2.8.0's commit message

Verified

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

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

    rather than

     List<String> prefixedKeys = new ArrayList<String>();
     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

2.8-preview3

Toggle 2.8-preview3's commit message

Verified

This tag was signed with the committer’s verified signature.
ingenthr Matt Ingenthron
Release of 2.8-Developer Preview 3

This update includes a number of merged in bugfixes from the
current release (2.7.3) and other bugfixes.

Also updated in DP2, we made all ViewResponse classes
(ViewResponseWithDocs, ViewResponseNoDocs, ViewResponseReduced) implement
ViewResponse and all classes contain the same functions.

What this means to you is that developers only need to be aware of the
ViewResponse class.

We also consolidated the Row classes and renamed them. All of the row
classes now implement ViewRow and contain all of the Row classes contain
the same functions. This means that you only have to deal with one type,
ViewRow, when dealing with rows.

For example:

Query query = new Query();
query.setRange("a", "m");
query.setDescending(false);
query.setIncludeDocs(true);

HttpFuture<ViewResponse> result = client.asyncQuery(view, query);

ViewResponse response;
try {
  response = result.get();
} catch (ExecutionException e) {
  e.printStackTrace();
  continue;
}

Iterator<ViewRow> itr = response.iterator();

while(itr.hasNext()) {
  ViewRow row = itr.next();
  String doc = (String)row.getDoc();
  System.out.println(doc);
}

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

Mike Wiederhold (44):
      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
      Merge branch 'refresh'
      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-50: Set viewmode programatically
      SPY-54: getBulk() shouldn't log a warning when a key is not found
      Send an ack for all tap opaque messages
      Merge branch 'refresh'
      Fixed test failure issue in testIPv6Host() in AddrUtilTest
      Added function to get number of vBuckets to MembaseClient
      Operations statuses on errors are now handled by the operation
      Deleted files that accidentally got included in the last merge
      Made cmd variable a byte for binary operations
      Merge branch 'refresh'
      Fixed ASCII getl issue.
      Removed a print line statement from TestConfig
      Removed extra variables in tapCustom header
      Flush the PrintWriter in TapMessagePrinter
      Merge "Merge branch 'refresh'"
      Don't reconnect when a tap connection finishes.
      SPY-26: Add Getl Tests
      Added a docsjar target
      Made package the default target and made it build all jars
      Install javadocs java into local maven when doing ant mvn-install
      The jar target now builds a jar of all of the test classes
      Made vbmap in MultiKey operation synchronized
      Updated README.markdown to reflect the new build file
      SPY-37 & SPY-38: Fixed redistribution performance issue
      Recognize a query is using a json object and don't quote it
      Refactored tap message classes.
      SPY-48: Incr/Decr param "by" should be able to take a long
      Fixed checkstyle issues from merge with refresh
      SPY-4: Get CouchDB config info from config
      Fixed testOverflowing ReadQueue in QueueOverflowTest
      Fixed a typo when computing vbucketlist size for tap messages.
      SPY-58: Don't compress json objects

Matt Ingenthron (11):
      Log warnings when retrying due to not my vbucket.
      Update commons-codec to 1.5 in .classpath for Eclipse.
      No need for old debugging string in test.
      Revert "SPY-37 & SPY-38: Fixed redistribution performance issue"
      Continue to other URIs if one in the list is down. SPY-60.
      Merge branch 'refresh'
      Rename and fix VBucketMemcachedClientTest to VBucketMembaseClientTest.
      Skip all ConfigurationProvider tests when testing against memcached.
      Update to Netty 3.2.0.Final.
      Update maven pom generation with more detail.
      Update maven dependencies and metadata for more completion and accuracy.

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

Dustin Sallings (2):
      Merge "Merge branch 'refresh'"
      Format the readme correctly.

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

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

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

2.7.3

Toggle 2.7.3's commit message

Verified

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

2.7.2

Toggle 2.7.2's commit message

Verified

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

2.7.1

Toggle 2.7.1's commit message

Verified

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

2.8-preview

Toggle 2.8-preview's commit message

Verified

This tag was signed with the committer’s verified signature.
ingenthr Matt Ingenthron
Release of 2.8-Developer Preview

The 2.8 Developer Preview gains a new client interface for connecting
specifically to Membase Server and a client API to connect to
Couchbase Server. The API for Couchbase Server allows the user to be
able to do view queries.

The addition of the MembaseClient object allows users the ability to
connect specifically to Membase Server. Previously, to connect to
Membase Server, developers would use the MemcachedClient and as a
result there was mixed logic in the MemcachedClient class. So of this
logic worked only when connecting to Membase and not to Memcached.
Similarly there were operations added through the MemcachedClient
class that were not compatible with Memcached Server. This decoupling
of logic allows for a more correct and easy to use client object.

The second major addition to this release is the addition of the
CouchbaseClient which is used to connect to Couchbase Server. Addition
of this interface required a new Http Subsystem to be added so that
developers could take advantage of view support offered in Couchbase
Server.

To support the added functionality in this release we added the
following runtime dependencies:
httpcore 4.1.1
httpcore-nio 4.1.1

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

Mike Wiederhold (13)

    Changes operationTimeout for http operations to 60 seconds.
    Added the ability to have a properties file with config info
    Moved protocol.couchdb package to protocol.couch
    Added the ability for Spy to handle errors in views
    Made MembaseClient and CouchbaseClient reconfigurable
    A few javadoc fixes.
    Added Couchbase Views
    Added new test configuration args for Couchbase Server.
    Updated eclipse classpath to include commons-codec 1.5
    Add HTTP Subsystem
    Removed warnings from LoggerFactory
    Changed MemcachedConnection varibale from conn to mconn
    Added MembaseClient Object

Paul Burnstein (1)
    Spymemcached Issue 134: Performance fix

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

2.7

Toggle 2.7's commit message

Verified

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

2.6

Toggle 2.6's commit message

Verified

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

2.6rc2

Toggle 2.6rc2'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.  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