Tags: bilal/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