Tags: wujiangthu/java-memcached-client
Tags
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
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)
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
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
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
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
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
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
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
PreviousNext