Tags: nmpdev/java-memcached-client
Tags
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. Contributors: 10 Matt Ingenthron 9 Blair Zajac 3 Boris Partensky 3 Dustin Sallings 1 Andrey Kartashov 1 ddlatham
Release of 2.5 Changes since the 2.4 series: The main new feature of the 2.5 release is support for SASL auth to go along with the same feature in the memcached 1.4.3 and later servers. There is also a new feature which can be used in conjunction with the failure cancel mode to close all connections to memcached servers if there are timeouts against a server. This helps to recover from situations where a memcached server in the list may hard fail. Also notable is this commit: cba26c1 If the String value of the socket address starts with a /, remove it. This does affect Ketama hashing, as it was found there could be some occasional mismatch with libketama. A much larger test was added and to a pretty large degree, compatibility with libketama's hashing is assured. Proceed with caution if you'll be running a mixed environment of 2.5 and pre-2.5 spymemcached clients. To get the old behavior by default, a custom interface is easily implemented. Additionally, there have been a number of bug fixes, comment cleanups some new tests, and some consistency fixes. Changes since 2.4.2: Ahn Seong Hwa (2): New TCP connection timeout feature; if server fails completely, d/c. fix for useless check statement that is for continuous timeout exception counter Blair Zajac (3): Be more generous in the strings that AddrUtil#getAddresses() will parse. Fix AddrUtilTest#testIPv6Host() hostname assertion. Fix consistency issue in ConnectionFactoryBuilder.isDaemon() Dustin Sallings (19): Beginnings of SASL support. A slightly better model for SASL auth. Authentication should allow specification of a mechanism. Refactored broadcast to allow for node selection. Working multi-step auth. Refactored SASL auth for greater reuse. Added support for listing SASL mechanisms. Reformatted callback handler. Don't throw away an exception. Use the socket address as the realm. Better auth API, handles connection drops. Log the bug that causes reconnection on first connect. Replaced Long nanos with long millis for op queue block offer timeout. Ensure the factory builder can be used to specify enqueue block size. Get rid of special constructors for op enqueue timeouts. Do blocking inserts from the cache loader test. Auth fix for mechanisms that have an initial response. If the String value of the socket address starts with a /, remove it. A larger libketama extract for compatibility testing. Greg Kim (1): Implementing read-only methods in MemcachedNodeROImpl - issue86 Kristian Eide (1): Allow user-specified wait time for availability of queue space. Matt Ingenthron (14): Invert the ConnectionFactoryBuilderTest to go with new logic. Document unexpected incr/decr behavior. Issue 48. Various Javadoc completeness. Docs for path to FailureModes on DefaultConnectionFactory. Issue 115. Clarify Future<Boolean>, issue 63. Clarify what is planned after a disconnect. Enhance MemcachedNode to know whether auth should happen. Changed AuthTest description to match reality. Manual test to ensure correct connection handling with SASL. Enhanced ConnectionFactoryBuilder test for auth. Minor fixes to SASL reconnect test. Handle auth failures more gracefully; maximum failures. Log operation failures as potential auth failures. Actually use the args to SASLConnectReconnect; shutdown nicely. Bugs fixed/closed: http://code.google.com/p/spymemcached/issues/detail?id=48 http://code.google.com/p/spymemcached/issues/detail?id=115 http://code.google.com/p/spymemcached/issues/detail?id=63 http://code.google.com/p/spymemcached/issues/detail?id=112 http://code.google.com/p/spymemcached/issues/detail?id=111 http://code.google.com/p/spymemcached/issues/detail?id=109 http://code.google.com/p/spymemcached/issues/detail?id=78 http://code.google.com/p/spymemcached/issues/detail?id=104 With others which can be listed here: http://code.google.com/p/spymemcached/issues/list
Prerelease of 2.5 Changes since the 2.4 series: The main new feature of the 2.5 release is support for SASL auth to go along with the same feature in the memcached 1.4.3 and later servers. There is also a new feature which can be used in conjunction with the failure cancel mode to close all connections to memcached servers if there are timeouts against a server. This helps to recover from situations where a memcached server in the list may hard fail. The reason for rc3, and the significant changes over rc2, is that a number of issues were found where operations could be sent without allowing SASL to complete. Contributors: 2 Ahn Seong Hwa 3 Blair Zajac 25 Dustin Sallings 2 Kevin Lafferty 1 Kristian Eide 11 Matt Ingenthron
Prerelease of 2.5 Changes since the 2.4 series: The main new feature of the 2.5 release is support for SASL auth to go along with the same feature in the memcached 1.4.3 and later servers. There is also a new feature which can be used in conjunction with the failure cancel mode to close all connections to memcached servers if there are timeouts against a server. This helps to recover from situations where a memcached server in the list may hard fail. Contributors: 7 Dustin Sallings 5 Matt Ingenthron 2 Ahn Seong Hwa 1 Blair Zajac 1 Kristian Eide
Release 2.4.2 Changes since 2.4.1: Dustin Sallings (4): StorageListener should be public. Removed a debugging stdout thing. Handle operations that are writing and reading at the same time. Allow MemcachedClient and AsciiOperationFactory extensibility. Kevin Lafferty (2): MemcachedConnection constructor should catch SocketException Support byte arrays in WhalinV1Transcoder. Matt Ingenthron (1): Some javadoc cleanup in MemcachedClient examples. Bugs fixed: http://code.google.com/p/spymemcached/issues/detail?id=98 http://code.google.com/p/spymemcached/issues/detail?id=68 http://code.google.com/p/spymemcached/issues/detail?id=83 http://code.google.com/p/spymemcached/issues/detail?id=74 http://code.google.com/p/spymemcached/issues/detail?id=95 http://code.google.com/p/spymemcached/issues/detail?id=97 http://code.google.com/p/spymemcached/issues/detail?id=94
Version 2.4 Changes since the 2.3 series. Bug Fixes: * Memcached node tracking. When a timeout occurs on an operation, the exception indicates the server node that was the intendend recipient of the operation. * Fixed reconnect loss on multiple simultaneous connection failures. This is a rare occurrence, but the wrong thing would happen if two simultaneous reconnects were requeued for any reason. * Fixed a race condition that occurred when tearing down a connection. There was a case where shutting down a connection would cause an NPE to get logged due to the a race between a selector check and the selector being shut down. Unlikely to affect a running app, but it was still wrong. * Handle initial connect failures. There were rare cases where an async connect would error instantly on the first attempt, but that connect wouldn't be retried. * Sequence number wrapping bug. If you sent more than 2 billion or so requests to a node, the client would find itself in an infinite loop trying to cmoe up with a new opaque value. * Suboptimal back-off algorithm. The previous back-off algorithm wouldn't create a reasonable reconnect curve. The new one is more gradual and has a configurable maximum ceiling. Features: * ConnectionFactoryBuilder Rather than having to build a custom subclass of DefaultConnectionFactory to override behaviors, you can now use a ConnectionFactoryBuilder to easily assemble a ConnectionFactory as you want it. * Mutation-only CAS mutator Previously, the CASMutator required an initial object to use if the object you were attempting to mutate wasn't found. Now you can specify this as NULL and CASMutator will *only* mutate an existing object, but never create a new one. * CacheLoader CacheLoader provides a couple of convenient mechanisms for efficiently loading bulk data. I've seen many benchmarks trying to see how fast data can go into memcached through the client (as opposed to normal usage), but they do things to make it unnecessarily slow. This should satisfy both benchmarking requirements and legitimate bulk loading requirements. * KetamaNodeLocator is more configurable. The node data ketama uses for building a hash is configurable now in an effort to make consistent hashing work between java and C#. Performance Enhancements: * Disable Nagle Algorithm by Default The usage of the Nagle algorithm (tcpNoDelay) is now configurable and is configured off by default (Nagle algorithm off = tcpNoDelay on). This should be more optimal for most configurations. * Multi-set Escalation in the Binary Protocol With no changes to the API, multiple sequential sets will be escalated into a multi-set operation similar to multi-get. In a bulk load test, this is generally around 2x faster. * Asynchronous Transcoding Service A transcoder can request a transcoder service (effectively a threadpool) to asynchronously decode cache response objects both outside of the API and outside of the caller thread. Contributors: 40 Dustin Sallings 1 Joseph Hart 1 Lewis Zimmerman 1 Wang Nan 1 ciaranj
Prerelease of 2.4 Changes since the 2.3 series. Bug Fixes: * Memcached node tracking. When a timeout occurs on an operation, the exception indicates the server node that was the intendend recipient of the operation. * Fixed reconnect loss on multiple simultaneous connection failures. This is a rare occurrence, but the wrong thing would happen if two simultaneous reconnects were requeued for any reason. * Fixed a race condition that occurred when tearing down a connection. There was a case where shutting down a connection would cause an NPE to get logged due to the a race between a selector check and the selector being shut down. Unlikely to affect a running app, but it was still wrong. * Handle initial connect failures. There were rare cases where an async connect would error instantly on the first attempt, but that connect wouldn't be retried. Features: * ConnectionFactoryBuilder Rather than having to build a custom subclass of DefaultConnectionFactory to override behaviors, you can now use a ConnectionFactoryBuilder to easily assemble a ConnectionFactory as you want it. * Mutation-only CAS mutator Previously, the CASMutator required an initial object to use if the object you were attempting to mutate wasn't found. Now you can specify this as NULL and CASMutator will *only* mutate an existing object, but never create a new one. * CacheLoader CacheLoader provides a couple of convenient mechanisms for efficiently loading bulk data. I've seen many benchmarks trying to see how fast data can go into memcached through the client (as opposed to normal usage), but they do things to make it unnecessarily slow. This should satisfy both benchmarking requirements and legitimate bulk loading requirements. Performance Enhancements: * Disable Nagle Algorithm by Default The usage of the Nagle algorithm (tcpNoDelay) is now configurable and is configured off by default (Nagle algorithm off = tcpNoDelay on). This should be more optimal for most configurations. * Multi-set Escalation in the Binary Protocol With no changes to the API, multiple sequential sets will be escalated into a multi-set operation similar to multi-get. In a bulk load test, this is generally around 2x faster. * Asynchronous Transcoding Service A transcoder can request a transcoder service (effectively a threadpool) to asynchronously decode cache response objects both outside of the API and outside of the caller thread. Contributors: 30 Dustin Sallings 1 Joseph Hart 1 Wang Nan
Release 2.3.1 Changes since 2.3: * Fixed connection observeration. There was a condition where an exception could occur that wouldn't be tracked properly. There's no automated test for this, but a test was constructed to manually verify the behavior with different server failure conditions. * Fixed stat parsing for some stats. Tests were added to confirm that both stat responses that don't begin with STAT and stat values that contain spaces are handled correctly. * Honor transcoder sizes. This adds a new requirement on the transcoder API to specify how many bytes the transcoder can store or read. This both allows small transcoders to put size constraints in that will immediately throw an IllegalArgumentException when a result is too large to possibly work as well as allowing users to customize their memcached instances to allow for larger than normal objects. Contributors: 4 Dustin Sallings
PreviousNext