这是indexloc提供的服务,不要输入任何密码
Skip to content

2.7.1

@ingenthr ingenthr tagged this 23 Aug 15:49
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
Assets 2
Loading