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