All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.spy.memcached.changelog.txt Maven / Gradle / Ivy

The newest version!
commit 740a9c63e887623c678049b7f1003e2f5372dcb8
Author: Dustin Sallings 
Date:   Wed May 11 12:05:04 2011 -0700

    Removed a bit of dead test code.
    
    Change-Id: I295d7b6b301217866f1074c526cdeba6d60420ab
    Reviewed-on: http://review.membase.org/6152
    Tested-by: Matt Ingenthron 
    Reviewed-by: Matt Ingenthron 

commit f993fe99d04337dbca5b337d79258a39baaa447d
Author: Dustin Sallings 
Date:   Wed May 11 12:02:31 2011 -0700

    Compilation fix after spring de-generification.
    
    Change-Id: Ic3cddeedb76ce096569a34e3d8024be06bd4bd62
    Reviewed-on: http://review.membase.org/6151
    Tested-by: Matt Ingenthron 
    Reviewed-by: Matt Ingenthron 

commit 79743d192463d202008c7ab8d460a8f35631b438
Author: Luke Lappin 
Date:   Mon May 9 09:51:29 2011 -0700

    Do not use generics with Spring Factory Bean, be 2.5 compatible.
    
    To be backward compatible with Spring 2.5, the Factory Bean should
    avoid the use of generics.
    
    Change-Id: I2244a24a051b1b90e4142fa01785ae7e095ed87f
    Reviewed-on: http://review.membase.org/6091
    Reviewed-by: Michael Wiederhold 
    Reviewed-by: Nelz 
    Reviewed-by: Luke Lappin 
    Reviewed-by: Eran Harel 
    Reviewed-by: Trond Norbye 
    Reviewed-by: Dustin Sallings 
    Tested-by: Matt Ingenthron 

commit 377eaa537de4a8d3527bd579216bd541ec0a4a13
Author: Matt Ingenthron 
Date:   Tue Apr 19 00:43:47 2011 -0700

    Increase the maximum size allowed.  Issue 106.
    
    Though memcached still has a 1MiB size by default (overridable
    with a flag), other engines may have their own maximum.  Membase
    for instance has a 20MiB maximum.
    
    Note that the size enforced by the transcoder can be overridden
    through it's ctor.  The reason for making this change is to
    create a new, larger default.
    
    At least for the remainder of the 2.6 series, rather than do
    deep surgery on this issue, just bump up the maximum.
    
    Change-Id: I3e7bb000b12a63b4a299cb8b79a3151fbfc91615
    Reviewed-on: http://review.membase.org/6074
    Reviewed-by: Michael Wiederhold 
    Reviewed-by: Trond Norbye 
    Tested-by: Matt Ingenthron 

commit 00daa10f012a7fd1656f41a5678629fa5978b1f5
Author: Matt Ingenthron 
Date:   Wed Mar 23 14:59:06 2011 -0700

    Search more with the KetamaIterator.
    
    The existing KetamaIterator implementation, with a small number
    of nodes, may actually hit the same down node multiple times in
    a row leading to failing to find a node when it should find
    another one.
    
    The original libketama[1] hashes each server to 160 numeric
    values.  These are spread out in a 64-bit value.  The key is
    then hashed to a numeric value within that 64-bit value and
    walked forward until it finds a server.
    
    Previously, this library's ketama implementation would only look
    in the consistent hash for a number of iterations limited by the
    number of servers.  With two servers (similar to flipping a
    coin, you'd get heads twice in a row sometimes) you would have
    a 1 in 4 chance of picking the same dead server twice.
    
    The new implementation will iterate based on the number of
    servers, but attempts to keep the probability of hitting the
    same dead server to less than 1% for a two node configuration.
    This will guarantee less than 1% possibility with two or more
    servers.
    
    Because we iterate by simply appending the number of tries on
    the front of the key, we'll be quite random about where in
    the continuium we hit.  Each selection is rather random, but
    for a set of results already calculated, half of which are
    alive and half of which are dead, we can say that in seven
    iterations, there is only a 1/128 [1/(2^7)] chance that we
    would not select once at least one alive server.  The
    probability for any given test still 1/2, but we can describe
    the probability of the iterations.  The key info on this came
    from the "gambler's fallacy"[2].
    
    1. https://github.com/RJ/ketama/blob/master/libketama/ketama.c
    2. http://en.wikipedia.org/wiki/Gambler's_fallacy
    
    Other references:
    http://answers.google.com/answers/threadview/id/568615.html
    http://en.wikipedia.org/wiki/Combinations
    
    Change-Id: I6fa52c0b02516b68ca8da26e4fd85bb1730b82b2
    Reviewed-on: http://review.membase.org/5207
    Reviewed-by: Aliaksey Kandratsenka 
    Tested-by: Matt Ingenthron 

commit c157be5e151c16299da5f60dda3d6cc241ed956c
Author: Matt Ingenthron 
Date:   Thu Mar 31 17:50:59 2011 -0700

    Separate the KetamaIterator for future dynamic configuration.
    
    Some future implementations may want to have dynamic changes to
    the nodes list, so the KetamaIterator has been refactored to its
    own class so it can be replaced while a client is instantiated.
    
    Change-Id: I0c8102bf737226c054662b043661ec97907a283b
    Reviewed-on: http://review.membase.org/5206
    Reviewed-by: Aliaksey Kandratsenka 
    Tested-by: Matt Ingenthron 

commit 53d61388290f51324960c02e5c71e5ae8431189b
Author: Matt Ingenthron 
Date:   Mon Mar 21 15:44:04 2011 -0700

    Fixed cancellation issue.
    
    It was found that an operation which had been canceled would
    block the rest of the queue from being processed.  This needs
    to be removed from the queue so the other data may flow.
    
    Change-Id: Ibac73fa9816855976b80fd7248b63f36eb2c1b44
    Reviewed-on: http://review.membase.org/5205
    Reviewed-by: Trond Norbye 
    Tested-by: Matt Ingenthron 

commit ef4a071726131b1c51869b8b24893ca6d0ac6944
Author: Matt Ingenthron 
Date:   Mon Feb 21 01:09:47 2011 -0800

    Fixed minor comment formatting.
    
    Change-Id: Ie7256580316f08f7bff676525cead3dd872878e1
    Reviewed-on: http://review.membase.org/5204
    Reviewed-by: Blair Zajac 
    Reviewed-by: Trond Norbye 
    Tested-by: Matt Ingenthron 

commit 0e1499643c745947570ed1d28fb96ec0fd8ba3ee
Author: Matt Ingenthron 
Date:   Sun Feb 20 23:41:26 2011 -0800

    Added ability to see if op unsent but timedout.
    
    Change-Id: If32de603bdb597db993a22b47ffbe3367e566488
    Reviewed-on: http://review.membase.org/5203
    Reviewed-by: Trond Norbye 
    Tested-by: Matt Ingenthron 

commit 61edff29593be4ce03bbe34289bebfd0115fb07e
Author: Matt Ingenthron 
Date:   Sun Feb 20 23:39:44 2011 -0800

    Fixed small log typo.
    
    Change-Id: Ie1b2deffd89e778f5ac0ec4762e73fe5b852f66a
    Reviewed-on: http://review.membase.org/5202
    Reviewed-by: Blair Zajac 
    Reviewed-by: Trond Norbye 
    Tested-by: Matt Ingenthron 

commit a764cf925823706f36a46e6f8f05c20d2b7cae2f
Author: Matt Ingenthron 
Date:   Sun Feb 20 23:39:05 2011 -0800

    Warn when redistribute cannot find another node.
    
    Change-Id: I7f4eece7d52638c92b305b0f2af35c458e57b0d3
    Reviewed-on: http://review.membase.org/5201
    Reviewed-by: Blair Zajac 
    Reviewed-by: Trond Norbye 
    Tested-by: Matt Ingenthron 

commit bc70869f41228afdc244c162cc29a68c31c45fcf
Author: Eran Harel 
Date:   Wed Feb 23 15:02:17 2011 +0200

    Spring FactoryBean support.
    
    Added a Spring FactoryBean for simplifying
    MemcachedClient creation in a Spring applications.
    This is a patch for
    http://code.google.com/p/spymemcached/issues/detail?id=164
    
    Change-Id: Ib4051608631d976487ab8114083f6d32d35258a7
    Reviewed-on: http://review.membase.org/4752
    Reviewed-by: Matt Ingenthron 
    Tested-by: Matt Ingenthron 

commit b8ae76dd1d13078e4cad07beb0dccee186377327
Author: Matt Ingenthron 
Date:   Wed Feb 16 19:05:04 2011 -0800

    Changed transcoder logging to more appropriate defaults.
    
    Change-Id: Ia097e245b5be75926165c4e482a86c92a80b5fa0
    Reviewed-on: http://review.membase.org/4612
    Reviewed-by: Blair Zajac 
    Reviewed-by: Michael Wiederhold 
    Reviewed-by: Dustin Sallings 
    Reviewed-by: Trond Norbye 
    Reviewed-by: Matt Ingenthron 
    Tested-by: Matt Ingenthron 

commit c7bc636705347039e4557f113c354cbcaf1c0ee0
Author: Matt Ingenthron 
Date:   Tue Jan 11 14:11:55 2011 -0800

    Catch RuntimeException instead.
    
    Timeouts from the get() without a time value specified will return
    simply a RuntimeException, while those from calling the get() with
    a time value can receive a TimeoutException.
    
    This also removes some debugging traces that were left in
    unfortunate places which could also cause test failures.
    
    Change-Id: Ie64aa5bedcbe36b4717c17750a63a08a7de1f12e
    Reviewed-on: http://review.membase.org/4248
    Tested-by: Matt Ingenthron 
    Reviewed-by: Michael Wiederhold 
    Reviewed-by: Dustin Sallings 

commit 52ad7e589aa859549e977ff513ca89fc375c695a
Author: Dustin Sallings 
Date:   Mon Jan 10 11:08:12 2011 -0800

    Avoid potential NPE as reported by eclipse.
    
    Change-Id: I2bedcea366bca83597cc9863da9c63a9966eeee9
    Reviewed-on: http://review.membase.org/4232
    Tested-by: Matt Ingenthron 
    Reviewed-by: Matt Ingenthron 

commit 9f1b6301200aca9ea889c969930d999df74a0bad
Author: Dustin Sallings 
Date:   Mon Jan 10 11:07:57 2011 -0800

    Some import cleanups.
    
    Change-Id: I54bdc264566684208e5273ce51d56f38d14be852
    Reviewed-on: http://review.membase.org/4231
    Tested-by: Matt Ingenthron 
    Reviewed-by: Matt Ingenthron 

commit 7416862c645e9429fc5e27402c8f264bc585e352
Author: Matt Ingenthron 
Date:   Thu Dec 30 16:27:31 2010 -0800

    Fixes to testSyncGetTimeouts.
    
    Previous to enforcing the timeouts at an operation level, this test
    would pass.  In fact, Dustin said the test had never failed before.
    
    However, it turns out that the really short default timeouts would
    be too short and not waiting a bit after encountering a timeout would
    still see timeouts.
    
    Change-Id: If1fbe77aa02f7cacabca91915927bf7b5e086284
    Reviewed-on: http://review.membase.org/4211
    Reviewed-by: Michael Wiederhold 
    Tested-by: Dustin Sallings 
    Reviewed-by: Dustin Sallings 

commit a4c25dcea0ca28640218441ab4fdc2cb9ffe71eb
Author: Matt Ingenthron 
Date:   Sun Jan 2 16:51:14 2011 -0800

    Add a TIMEDOUT state to ops and make callbacks correct.
    
    There would be some situations where the latch would not expire
    due to the callback not having been called.  Callbacks were
    typically called on state transition for the operation, so I
    thought it appropriate to add a TIMEDOUT state.
    
    Change-Id: Ia02b5bf6a91cf987dae3fc9faf02a41751653773
    Reviewed-on: http://review.membase.org/4212
    Reviewed-by: Michael Wiederhold 
    Reviewed-by: Dustin Sallings 
    Tested-by: Dustin Sallings 

commit ff6b1d5a083727221c93982d42829795ffff212a
Author: Matt Ingenthron 
Date:   Mon Dec 6 12:22:50 2010 -0800

    Recognize operation may be null at times.  e.g.: flush
    
    Both the timeout changes from myself and some of the continuious timeout
    changes from Boris assumed there would always be an operation.  In
    some cases, like flush, that is not necessarily the case.
    
    Looking at the existing code, there were lots of guards against null
    access already, so I just continued that tradition.
    
    The tradition may need to be broken though in the future.
    
    Change-Id: Ic1344ef2df2ab0ba4c03b4e401a4f98436a39772
    Reviewed-on: http://review.membase.org/4206
    Reviewed-by: Trond Norbye 
    Reviewed-by: Michael Wiederhold 
    Reviewed-by: Dustin Sallings 
    Tested-by: Dustin Sallings 

commit b26b6002421156df14044c0ae637d7aaaa4b96ed
Author: Matt Ingenthron 
Date:   Wed Dec 15 13:56:11 2010 -0800

    Fix for stats sizes test.
    
    Change-Id: I4d9a13f55ec0c15ebb07c924584aa33492a57a12
    Reviewed-on: http://review.membase.org/4209
    Reviewed-by: Michael Wiederhold 
    Reviewed-by: Dustin Sallings 
    Tested-by: Dustin Sallings 

commit 3a426512dbc7681800597e79392b221092555dc6
Author: Matt Ingenthron 
Date:   Thu Dec 30 14:17:58 2010 -0800

    Test fixes after adding new timeout logic.
    
    Several tests were expecting things to happen within 1ms,
    which is too short.  The new timeout functionality made these
    tests fail, where before they'd pass.
    
    Change-Id: I81473b25cfd4aa73c8c4473c1f337338162a0222
    Reviewed-on: http://review.membase.org/4210
    Reviewed-by: Trond Norbye 
    Reviewed-by: Dustin Sallings 
    Reviewed-by: Michael Wiederhold 
    Tested-by: Dustin Sallings 

commit e17758f9a6f7fc15ceaf595e77e1a3396ce9fff2
Author: Matt Ingenthron 
Date:   Tue Dec 7 18:20:04 2010 -0800

    Test for timeout from operation epoch.
    
    Change-Id: I81530461187509026cc18e995b3ceddcc3c76afb
    Reviewed-on: http://review.membase.org/4208
    Reviewed-by: Trond Norbye 
    Reviewed-by: Michael Wiederhold 
    Tested-by: Dustin Sallings 
    Reviewed-by: Dustin Sallings 

commit 0e1ebdb844b11f141e389ef584288a39219512a8
Author: Matt Ingenthron 
Date:   Tue Dec 7 09:50:21 2010 -0800

    Increased default timeout to 2500ms.
    
    The increase of the timeout to this seemingly high value is due to
    a few findings.
    
    First, by default, garbage collection times may easily go over 1sec.
    Testing with simple toy tests shows this quite clearly, even on
    systems with lots of CPUs and a decent amount of memory.  Of course,
    much of this can be controlled with GC tuning on the JVM.  With the
    hotspot JVM, look to this whitepaper:
    http://java.sun.com/j2se/reference/whitepapers/memorymanagement_whitepaper.pdf
    
    Testing showed the following to be particularly useful:
    -XX:+UseConcMarkSweepGC -XX:MaxGCPauseMillis=850
    
    There is a CPU time tradeoff for this.
    
    Even with these, testing showed some 1 second timeouts when GCs near a
    half a second.  To use this software though, we shouldn't expect people
    to have to tune the GC, so raising the default seems like the
    right thing to do.
    
    Second, many systems use spymemcached on virtualized or cloud environments.
    The processes running there do not have any guarantee of execution
    time.  It'd be really unlikely for a thread to be starved for more than
    a second, but it is possible and shouldn't make things stop.  Raising this
    a bit will help.
    
    Third, and perhaps most importantly, most people run applications on
    networks that do not offer any guarantee around response time.  If
    the network is oversubscribed or even minor blips occur on the network
    can cause TCP retransmissions.  While many TCP implementations ignore
    it, RFC 2988 specifies rounding up to 1sec when calculating
    TCP retransmit timeouts.  Blips will occur, and rather than force
    this seemingly synchronous get to timeout, it may be better to
    just wait a bit longer by default.
    
    Change-Id: Ie53ca774458466d9a2e6f70e65ea6663699a9f6f
    Reviewed-on: http://review.membase.org/4207
    Reviewed-by: Trond Norbye 
    Reviewed-by: Dustin Sallings 
    Reviewed-by: Michael Wiederhold 
    Tested-by: Dustin Sallings 

commit 4cf9d05e5342459acbce826fd93ba9cfd71f0050
Author: Matt Ingenthron 
Date:   Mon Nov 15 21:26:54 2010 -0800

    Do not write timedout operations to the MemcachedNode.
    
    This commit and related ones add support to an operation to
    have new methods and a state of TIMEDOUT.  The intent is to
    keep track of when an operation is created and if it either
    times out due to a latch timeout expiration or it is found
    to be already too old when thinking about sending the op
    to the network, just consider it timed out then and there.
    
    Note, object creation time is actually possibly quite a bit
    after when the request is made, depending on how that request
    is made.  Any number of things could have happened in
    between with GC, JIT, scheduling, etc.
    
    Also note that in order to avoid needing to rely on the latch
    which is in a different thread, this allows us to keep track
    of the creation time of the operation and check for whether or
    not it has timed out via the isTimedOut() method on the
    operation.
    
    Doing this correctly and with as little API change as possible
    required getting the default operation timeout down to the
    MemcachedNode level.  That information was not previously known
    to the Operation or the node, but simply relied on a latch.
    
    Change-Id: I60228433bfa121ed031dd81fc05a9d65cae5bf20
    Reviewed-on: http://review.membase.org/4204
    Reviewed-by: Dustin Sallings 
    Tested-by: Dustin Sallings 

commit 8688eaa23cb09bc8cb16a4d3ff02f21a4bb4ee4c
Author: Blair Zajac 
Date:   Thu Nov 11 19:22:20 2010 -0800

    Tiny performance improvement.
    
    It's OK to have the method return an interface, but use the concrete
    class name in the method so it doesn't need to invoke the methods
    through the interface.
    
    Change-Id: Ibd3638e574f9bd0c0928af5bada53de72a59e9f1
    Reviewed-on: http://review.membase.org/3641
    Reviewed-by: Dustin Sallings 
    Reviewed-by: Matt Ingenthron 
    Tested-by: Matt Ingenthron 

commit 385665d5575de49aa1aa4b10ba8ed0c2b804df27
Author: Blair Zajac 
Date:   Thu Nov 11 19:33:36 2010 -0800

    Minor performance improvement for bulk gets.
    
    If the size of an ArrayList is known before construction, then pass
    the size to the constructor.  This will either save a tiny bit of
    memory or save reallocation's, depending upon the number of elements
    that will be inserted into the ArrayList.
    
    Change-Id: If1db3a8578e2d8603e0c6dbbe781ed7258908eee
    Reviewed-on: http://review.membase.org/3640
    Reviewed-by: Dustin Sallings 
    Reviewed-by: Matt Ingenthron 
    Tested-by: Matt Ingenthron 

commit 3b3b3c856c6578aa7f1b887032c2a3fe0ff8f182
Author: Boris Partensky 
Date:   Thu Jul 1 14:02:11 2010 -0400

    support timeout based disconnects for bulk ops
    
    Refactored some repeating logic into helper methods,
    track continuous timeouts from bulk operations,
    log at warning.
    
    Change-Id: Ic0e3d14c8d7ff7001c3440683fa4274b119e4d31
    Reviewed-on: http://review.northscale.com/999
    Reviewed-by: Matt Ingenthron 
    Tested-by: Matt Ingenthron 

commit f0311f7d4ae79378eb81890277a115ec84ea4ce7
Author: Blair Zajac 
Date:   Mon Jun 28 12:49:37 2010 -0700

    Allow per-key transcoders to be used with asyncGetBulk().
    
    This change allows the transcoder to save state for each key.  An
    example is shown in the unit test that encodes into the byte array
    sent to the memcached server the key along with the value.  Upon
    decoding a value from memcached, the actual and expected keys are
    compared.
    
    Change-Id: Ie4697bc3f9923e7c2ba981ca334b0df9d1ab7315
    Reviewed-on: http://review.northscale.com/936
    Tested-by: Dustin Sallings 
    Reviewed-by: Dustin Sallings 

commit ce3bba1bfe6fe79ae3ea03094a89ccc1f3a02f6b
Author: Blair Zajac 
Date:   Sat Jun 12 11:59:26 2010 -0700

    Add an iterator that returns a single element forever.
    
    This iterator will be used to add a version of asyncGetBulk() that
    allows per-key transcoders to be used.  To efficiently allow the
    normal use of multiple keys with a single transcoder, instead of
    creating an array or list of identical transcoders, other
    asyncGetBulk() methods will create a SingleElementInfiniteIterator
    instead.
    
    Change-Id: Ica58e45f3e0e49a72c7a7a8743bf9180ea9cb7ed
    Reviewed-on: http://review.northscale.com/935
    Reviewed-by: Dustin Sallings 
    Tested-by: Dustin Sallings 

commit ca7bfc2428ead005c502cdfcf97911b83e7adab3
Author: ddlatham 
Date:   Fri Apr 2 11:17:03 2010 -0700

    Support daemon mode for TranscodeService threads.
    
    Change-Id: I28b58a9e1832abedfd8e4177bb38e5cdac158bcb
    Reviewed-on: http://review.northscale.com/920
    Reviewed-by: Dustin Sallings 
    Tested-by: Dustin Sallings 

commit 4efb06fd277e4261bc10597a856d57c9d5c1d374
Author: Dustin Sallings 
Date:   Mon Jun 21 21:42:36 2010 -0700

    Some minor fixes to make eclipse happy with the code again.
    
    - Removed @Override annotations where there are no overrides.
    - Renamed a couple of variables that were shadowing fields.
    
    Change-Id: I7e0f74da72214cbe4c72cd693ee11461138f172b
    Reviewed-on: http://review.northscale.com/919
    Reviewed-by: Dustin Sallings 
    Tested-by: Dustin Sallings 

commit f8111142520726952a49f7c7f9c223680c224acf
Author: Boris Partensky 
Date:   Thu Jun 17 14:05:26 2010 -0400

    plug potential file descriptor leak
    
    There is a problem in open/connect sequence that may produce
    file descriptor leaks in some abnormal conditions:
    First, SocketChannel.open() is called,
    then ch.connect(a.getSocketAddress())
    is called and it may throw an IOException under certain conditions.
    Then we catch exception and re-queue the node.
    This will produce a leak since the channel was not closed.
    
    The problem surfaced because of some faulty changes that I made
    and which I fixed. But it's nevertheless a problem.
    
    Sun  bug reference. http://bugs.sun.com/view_bug.do?bug_id=6548464
    They fixed it in a helper method that opens/connects in a single call.
    But in our case the client needs to take care of it.
    
    One more small unrelated change is to
    catch an unchecked exception and log an error:
    it is a serious case because the node
    will be essentially lost and never re-queued.
    
    Change-Id: I54930eb03f5c07fc6966f8d4d5db42548c63f6bd
    Reviewed-on: http://review.northscale.com:8080/630
    Reviewed-by: Dustin Sallings 
    Tested-by: Dustin Sallings 

commit 03bd66b3ba917e92690221a23b318975dd496a04
Author: Boris Partensky 
Date:   Tue Jun 15 14:18:10 2010 -0400

    return partial data from timed out getBulk
    
    Augmented Future object returned from asynGetBulk
    with an option to return partial data in case timeout is reached.
    
    Change-Id: I3bac849cee69fd6b57b20139832193b97975f6f6
    Reviewed-on: http://review.northscale.com:8080/563
    Reviewed-by: Dustin Sallings 
    Tested-by: Dustin Sallings 

commit c2102e2a348ec61424e538c58daed38d947ef2eb
Author: Blair Zajac 
Date:   Tue Jun 15 10:42:39 2010 -0700

    Fix compilation with JDK 1.5.
    
    Don't use methods and enum's that only exist in JDK 1.6.
    
    The changes successfully compile and the unit tests pass with JDK 1.6,
    but with 1.5 I consistently get a unit test failure here:
    
        [junit] Testcase: testSimpleLoading took 0.265 sec
        [junit] 	      Caused an ERROR
        [junit] java.lang.RuntimeException: blah
        [junit] java.util.concurrent.ExecutionException: java.lang.RuntimeException: blah
        [junit] 					     at net.spy.memcached.internal.ImmediateFuture.(ImmediateFuture.java:25)
        [junit] 					     at net.spy.memcached.util.CacheLoaderTest.testSimpleLoading(CacheLoaderTest.java:48)
        [junit] 					     at org.jmock.core.VerifyingTestCase.runBare(VerifyingTestCase.java:39)
        [junit] Caused by: java.lang.RuntimeException: blah
        [junit]
        [junit] TEST net.spy.memcached.util.CacheLoaderTest FAILED
        [junit] Tests FAILED
    The following tests failed:
    net.spy.memcached.util.CacheLoaderTest
    
    Change-Id: I34921695bec8bea5f4b8b0bace13951a41b3230a
    Reviewed-on: http://review.northscale.com:8080/561
    Reviewed-by: Dustin Sallings 
    Tested-by: Dustin Sallings 

commit 1f0daa087c4857f80abc6732a9e51ac9b204357f
Author: Blair Zajac 
Date:   Fri Jun 11 17:13:29 2010 -0700

    Delete a duplicate unit test.
    
    Change-Id: Ibdbbf79455c2e497ae7e121bd88a4f260e24fa54
    Reviewed-on: http://review.northscale.com:8080/416
    Reviewed-by: Dustin Sallings 
    Tested-by: Dustin Sallings 

commit d82f698b98c1a3c5df9eaec3cc0c26f567861857
Author: Blair Zajac 
Date:   Thu Jun 3 16:56:44 2010 -0700

    Use a faster method to get a MD5 MessageDigest instance.
    
    Instead of getting a fresh instance with MessageDigest.getInstance(),
    clone an existing MessageDigest that has not been updated with any
    bytes.
    
    Change-Id: If72e112e93014631767ed68d758728f372e9a7d8
    Reviewed-on: http://review.northscale.com:8080/292
    Reviewed-by: Dustin Sallings 
    Tested-by: Dustin Sallings 

commit 7ceca517bac2a1295da1b7fa8626695c2216fbb5
Author: Blair Zajac 
Date:   Thu Jun 3 13:10:30 2010 -0700

    No need to call MessageDigest#reset() on a brand new MessageDigest.
    
    Change-Id: I214f4fe0edb07c821f139b61526a2547d9772324
    Reviewed-on: http://review.northscale.com:8080/290
    Reviewed-by: Dustin Sallings 
    Tested-by: Dustin Sallings 

commit 76f00f65ff3bc884fc0557bfdf8f64a2843113e7
Author: Blair Zajac 
Date:   Wed Jun 2 11:55:50 2010 -0700

    Use a private static final byte array for "\r\n" instead of always
    converting the string into a byte array.
    
    Change-Id: I68fc5e9dea99a25e708808f14c8d0a58bd314336
    Reviewed-on: http://review.northscale.com:8080/269
    Reviewed-by: Dustin Sallings 
    Reviewed-by: Eric Lambert 
    Tested-by: Eric Lambert 

commit fb8b07a9f3d6bc08efdaabd40750e069f4011a51
Author: Andrey Kartashov 
Date:   Thu May 6 11:14:15 2010 -0400

    Move continuous timeout counter to individual connections.
    
    Change-Id: I0d275a824017865714af23abbb0eb61418d5d116
    Reviewed-on: http://review.northscale.com:8080/25
    Reviewed-by: Eric Lambert 
    Reviewed-by: Dustin Sallings 
    Tested-by: SeongHwa Ahn 

commit 72a9c6896897ea34cc69eace3f4bb85eaeeeefb1
Author: Matt Ingenthron 
Date:   Thu Apr 15 21:39:50 2010 -0700

    Changed ports in tests for non-listening to something higher.
    
    Change-Id: I49a3f3238e80c0e9c445df6ac2f32f634300811f
    Reviewed-on: https://review.northscale.com:8443/1298
    Reviewed-by: Trond Norbye 
    Reviewed-by: Eric Lambert 
    Reviewed-by: Dustin Sallings 
    Tested-by: Matt Ingenthron 

commit 3483b2aa1db7fcf16ba03d49fe9e02948a797fc0
Author: Matt Ingenthron 
Date:   Mon Apr 12 09:04:33 2010 -0700

    Actually use the args to SASLConnectReconnect; shutdown nicely.
    
    Change-Id: I7517a355707ed9440974d5b5b947fb13a8ba7142

commit 764b5b55d4b5d4c8a28575fe036fed05cf83e1b0
Author: Matt Ingenthron 
Date:   Tue Apr 6 16:19:16 2010 -0700

    Log operation failures as potential auth failures.
    
    Change-Id: I8e3f5d7cafda8b6007c96799cb8c09b7c780abc1

commit 4ac7a1e730f67cd4b4302d5ad50d8ab37251e016
Author: Matt Ingenthron 
Date:   Mon Mar 15 02:56:35 2010 -0700

    Handle auth failures more gracefully; maximum failures.
    
    This change will ensure that autentication failures do not
    hang the thread adding an operation.  The default behavior
    is to try to authenticate forever and whine to the log if
    authentication continues to fail.
    
    Optionally, a developer may define
    net.spy.memcached.auth.AuthThreshold with an integer value
    to set a maximum number of authentication attempts before
    shutting down.
    
    Authentication threads are now spawned and managed by an
    AuthTreadMonitor class, ensuring that for any given
    connection there can only be one outstanding AuthThread.
    
    Change-Id: I0af4ab41d27239e7b555dca7d993e6228b7df5b8

commit 07bd9bd6cf1816470eb9d67c43f69bf21dfd7e96
Author: Matt Ingenthron 
Date:   Thu Apr 1 15:36:37 2010 -0700

    Minor fixes to SASL reconnect test.
    
    Change-Id: Ib7a560c209dd9ac3d8ce0ea36d429228bd92e647

commit da151b80e27eb9ffc5a3954287fe48f654937f6e
Author: Greg Kim 
Date:   Wed Apr 7 11:04:21 2010 -0700

    Implementing read-only methods in MemcachedNodeROImpl - issue86
    
    Change-Id: I3437c4a69d9673d3fc7a2d0611012389b28e3d2f
    Reviewed-on: https://review.northscale.com:8443/1287
    Reviewed-by: Dustin Sallings 
    Tested-by: Dustin Sallings 

commit efb3e588b4aed12ea61234fe4249f6b5806a615c
Author: Matt Ingenthron 
Date:   Wed Mar 31 12:48:50 2010 -0700

    Enhanced ConnectionFactoryBuilder test for auth.

commit 8afa770465c9a1124d2a8e06ae72502d22b7e13f
Author: Matt Ingenthron 
Date:   Wed Mar 31 12:44:59 2010 -0700

    Manual test to ensure correct connection handling with SASL.

commit 114eb500d2362adec73c9537971eff5520513bd2
Author: Matt Ingenthron 
Date:   Wed Mar 31 09:11:36 2010 -0700

    Changed AuthTest description to match reality.

commit 449316f08b178c49bb6b54701ffa74b386b8448c
Author: Matt Ingenthron 
Date:   Thu Mar 25 18:09:10 2010 -0700

    Enhance MemcachedNode to know whether auth should happen.
    
    When SASL authentication is requested of a MemcachedClient it should
    always ensure that auth takes place before anything else on the queue
    is processed.
    
    After some experimentation, it seems The best way to handle this is to
    extend the MemcachedNode interface to add some methods. This in turn
    allows for the changes to be implemented in the TCPMemcachedNodeImpl
    class.
    
    There is special handling with the inputQueue and addOperation if
    a reconnect occurs during authentication.
    
    It's a bit harder at the BinaryMemcachedNodeImpl, though arguably
    makes more sense there.  Since these are all pretty well hidden as an
    implementation detail, it's okay for it to be here.
    
    Who knows, maybe someday ascii will have SASL.  Probably not though.

commit a8320eb61695d73f325cf580e5738f87f30f50c4
Author: Matt Ingenthron 
Date:   Thu Mar 25 17:06:20 2010 -0700

    Clarify what is planned after a disconnect.

commit 5061cf0d66c51f3f90b6adc13433c68eeb518d1f
Author: Matt Ingenthron 
Date:   Thu Mar 11 09:54:16 2010 -0800

    Clarify Future, issue 63.

commit dc42cff18e78220861c6590bba9e9e050e231bb4
Author: Matt Ingenthron 
Date:   Thu Mar 11 08:56:11 2010 -0800

    Docs for path to FailureModes on DefaultConnectionFactory. Issue 115.

commit 8f96c59a1dc89fc0aa7bfe680f2cb7627235915e
Author: Matt Ingenthron 
Date:   Thu Mar 11 08:25:55 2010 -0800

    Various Javadoc completeness.

commit 4d7f3d369e214cd73fad132116bf7ce1b47dc16d
Author: Matt Ingenthron 
Date:   Thu Mar 11 08:03:44 2010 -0800

    Document unexpected incr/decr behavior.  Issue 48.

commit bc4428cc258276efdf6b792b062b7733526f1624
Author: Matt Ingenthron 
Date:   Tue Feb 16 22:01:56 2010 -0800

    Invert the ConnectionFactoryBuilderTest to go with new logic.
    
    The contribution by Blair Zajac inverts the ConnectionFactoryBuilder
    defaults to match that of the DefaultConnectionFactory.  This updates
    the tests to check for the new default, and test the new change.

commit 64d2d915a6d0d325dd5b832902547354be328921
Author: Ahn Seong Hwa 
Date:   Sat Feb 6 02:28:10 2010 -0800

    fix for useless check statement that is for continuous timeout exception counter

commit c7502960018b2cd331af9e66c3c80b77deb69433
Author: Ahn Seong Hwa 
Date:   Fri Feb 5 06:59:46 2010 -0800

    New TCP connection timeout feature; if server fails completely, d/c.
    
    With this change, the MemcachedClient has a method of using the
    connection observer to determine a connected server is consistently
    timing out, indicating it has hard-failed.  This will destroy that
    connection so things may rehash or reconnect, depending on the hash
    behavior.

commit 90fdba5ac701a781e11c5374ecc17b1d3042bdb5
Author: Dustin Sallings 
Date:   Tue Mar 2 01:37:49 2010 -0800

    A larger libketama extract for compatibility testing.

commit cba26c186143f8adcbc7f8fbcb8d2dd2fbf9df91
Author: Dustin Sallings 
Date:   Tue Mar 2 01:36:09 2010 -0800

    If the String value of the socket address starts with a /, remove it.
    
    This is just the default stringification, clients can use whatever
    they want, but by default, this seems to provide consistent results
    with libketama.

commit af26afcfcbd1f1c187935c2a63708016a1e999ae
Author: Blair Zajac 
Date:   Mon Feb 15 20:54:40 2010 -0800

    Fix consistency issue in ConnectionFactoryBuilder.isDaemon()
    
    DefaultConnectionFactory#isDaemon() is false while
    ConnectionFactoryBuilder builds a ConectionFactory that by default
    returns true for #isDaemon(), so to make them consistent, modify
    ConnectionFactoryBuilder to have #isDaemon() be false.

commit 245667ac0961a157e8d6e39c6903663442cb4ee8
Author: Dustin Sallings 
Date:   Tue Jan 26 22:51:58 2010 -0800

    Auth fix for mechanisms that have an initial response.

commit 897e1194efa30eeaa5e4d50a40bb2686337573a7
Author: Dustin Sallings 
Date:   Sat Jan 9 13:27:06 2010 -0800

    Do blocking inserts from the cache loader test.

commit 28c831ce6f21aec0337318b43f8aa18a3da020f9
Author: Dustin Sallings 
Date:   Sat Jan 9 13:20:15 2010 -0800

    Get rid of special constructors for op enqueue timeouts.

commit c02de90265e5f107db5eeabd3ac57fc7d37a8ad2
Author: Dustin Sallings 
Date:   Sat Jan 9 13:15:48 2010 -0800

    Ensure the factory builder can be used to specify enqueue block size.

commit 2688a79d59ed835dd19fd7bee79a35af99ba6928
Author: Dustin Sallings 
Date:   Sat Jan 9 13:07:10 2010 -0800

    Replaced Long nanos with long millis for op queue block offer timeout.

commit 229605f0751b1ae7dad799697192c97478ad6704
Author: Kristian Eide 
Date:   Sat Jan 9 12:36:56 2010 -0800

    Allow user-specified wait time for availability of queue space.
    
    This means that instead of raising a queue overflow exception on
    insert, the client can optionally block waiting for space to become
    available instead (with a timeout that will result in the same
    exception).

commit b306283bf8fd2139a0365c39b125e539dbc4a21c
Author: Dustin Sallings 
Date:   Tue Nov 10 22:44:50 2009 -0800

    Log the bug that causes reconnection on first connect.

commit 4549dce24f0e345b5af1065a1ec44e2bb25a78e5
Author: Dustin Sallings 
Date:   Tue Nov 3 23:05:25 2009 -0800

    Better auth API, handles connection drops.

commit 9c409fc1dddaf73fce314207e3732c41c7767eed
Author: Dustin Sallings 
Date:   Sun Oct 18 01:24:10 2009 -0700

    Use the socket address as the realm.

commit de78a6ed8fb551c9bef25e5e8ab555f5e4b95eea
Author: Dustin Sallings 
Date:   Sun Oct 18 01:03:44 2009 -0700

    Don't throw away an exception.

commit b812d3d82bd0b418eac4a5d0a3552384a60fb964
Author: Dustin Sallings 
Date:   Sun Oct 18 01:03:34 2009 -0700

    Reformatted callback handler.

commit 34933a29eb1b37cc56ceece66247524da2daa620
Author: Dustin Sallings 
Date:   Sat Oct 10 11:56:18 2009 -0700

    Added support for listing SASL mechanisms.

commit 8423612aa55868e9840ae1b0d977ddd58975c63b
Author: Dustin Sallings 
Date:   Sat Oct 10 11:48:16 2009 -0700

    Refactored SASL auth for greater reuse.

commit 0384e37455c8a6852e0f5b9445920774a2133ec9
Author: Dustin Sallings 
Date:   Sat Oct 10 11:39:17 2009 -0700

    Working multi-step auth.

commit 0ff519f0d438b5403c71e3fdaaaff077ab246508
Author: Dustin Sallings 
Date:   Sat Oct 10 11:23:50 2009 -0700

    Refactored broadcast to allow for node selection.

commit b9f90a5cc28eaa14d40afc607b09e99b3432bc04
Author: Dustin Sallings 
Date:   Sat Oct 10 10:51:51 2009 -0700

    Authentication should allow specification of a mechanism.

commit 23152a22a473edf09fd2c869c0c8274e90396058
Author: Dustin Sallings 
Date:   Wed Oct 7 22:42:57 2009 -0700

    A slightly better model for SASL auth.
    
    I still need to actually attempt a multi-step auth attempt.

commit cf7f34f112a2401fe160fabcc7c059a3207a8726
Author: Dustin Sallings 
Date:   Tue Oct 6 23:58:24 2009 -0700

    Beginnings of SASL support.
    
    I've manually verified this is happy with a test server both in the
    auth pass and auth fail cases.  It needs a lot of work before it's
    good, though.

commit 7831c780826f137607737a922d22a5ebf9b23b92
Author: Blair Zajac 
Date:   Fri Nov 6 08:55:41 2009 -0800

    Fix AddrUtilTest#testIPv6Host() hostname assertion.
    
    This broke on operating systems where the IPv6 localhost is not listed
    in /etc/hosts as "localhost" but as "ip6-localhost" for Ubuntu or
    "localhost6.localdomain6" for Centos 5 and Foresight Linux.

commit 720189210dbde12c7bfb8cb2fd5dc16e12a88756
Author: Blair Zajac 
Date:   Fri Nov 6 08:33:18 2009 -0800

    Be more generous in the strings that AddrUtil#getAddresses() will parse.
    
    The code will now allow multiple whitespace and commas to separate
    "host:port" tokens.

commit 0437b0ec87280f608f63167f3a87218325309803
Author: Dustin Sallings 
Date:   Tue Oct 27 10:54:50 2009 -0700

    Allow MemcachedClient and AsciiOperationFactory extensibility.
    
    While I don't encourage people to just randomly start changing stuff,
    I also shouldn't assume I'm smarter than my users.  :)

commit e2286e754cdb2eccf5247da659ed65c9f5f66c76
Author: Matt Ingenthron 
Date:   Tue Oct 27 10:39:51 2009 -0700

    Some javadoc cleanup in MemcachedClient examples.
    
    I don't think it'd be a change between Java 1.5 and Java 6, but in any
    event I found the advanced example didn't compile without the changes
    incorporated in the diff in the comments here.  Since binary protocol
    is a feature, I thought this was a good place to show it off too.

commit 32762f8b7908d91de10fb74d905398818b1552e7
Author: Dustin Sallings 
Date:   Tue Oct 27 09:46:05 2009 -0700

    Handle operations that are writing and reading at the same time.
    
    Especially in bulk cases, the server can be transmitting data from an
    operation and receiving results from it simultaneously.  It's no
    longer sufficient to consider an operation to be either reading or
    writing, but it's likely that it will need to read at the very moment
    it begins writing.

commit 088874107925dec5413db50c6d4503cf11b64cd3
Author: Kevin Lafferty 
Date:   Fri Oct 23 00:00:27 2009 -0700

    Support byte arrays in WhalinV1Transcoder.

commit 9e61290d93b98ccd705aea3958cb8d80f762d0c9
Author: Kevin Lafferty 
Date:   Thu Oct 22 09:33:40 2009 -0700

    MemcachedConnection constructor should catch SocketException
    
    Running version 2.0.1 on OS X 10.5.7 with JDK 1.5, I observed the
    following exception when to a host that had been accidentally taken
    out of service:
    
    java.net.SocketException: Host is down
    	at sun.nio.ch.Net.connect(Native Method)
    	at sun.nio.ch.SocketChannelImpl.connect(SocketChannelImpl.java:464)
    	at net.spy.memcached.MemcachedConnection.(MemcachedConnection.java:80)
    	at net.spy.memcached.DefaultConnectionFactory.createConnection(DefaultConnectionFactory.java:84)
    	at net.spy.memcached.MemcachedClient.(MemcachedClient.java:146)
    
    It looks like the 2.4.1 client resolves this by catching
    ConnectException and queuing a reconnect, in this code:
    
    // Initially I had attempted to skirt this by queueing every
    // connect, but it considerably slowed down start time.
    try {
    	if(ch.connect(sa)) {
    		getLogger().info("Connected to %s immediately", qa);
    		connected(qa);
    	} else {
    		getLogger().info("Added %s to connect queue", qa);
    		ops=SelectionKey.OP_CONNECT;
    	}
    	qa.setSk(ch.register(selector, ops, qa));
    	assert ch.isConnected()
    		|| qa.getSk().interestOps() == SelectionKey.OP_CONNECT
    		: "Not connected, and not wanting to connect";
    } catch(ConnectException e) {
    	queueReconnect(qa);
    }
    connections.add(qa);
    
    Given the stack trace I observed, the catch of ConnectException should
    cast a slightly larger net and catch SocketException.
    
    (issue94)

commit c84ddd7d60697d66eadab5d8b79a3d2e772e6d8c
Author: Dustin Sallings 
Date:   Thu Oct 22 09:20:10 2009 -0700

    Removed a debugging stdout thing.

commit 3e274e81df0b7e2f3d28a70999487088c1cf6de2
Author: Dustin Sallings 
Date:   Wed Oct 21 17:41:52 2009 -0700

    StorageListener should be public.

commit 88aad1bf7f4abc716d5c0981321c5f8c177f3054
Author: Dustin Sallings 
Date:   Wed Oct 14 11:38:00 2009 -0700

    Increase timeout in overflow test.

commit a31795d68ea59a32e037384e35cf06ff2f683b14
Author: Dustin Sallings 
Date:   Tue Oct 13 20:36:39 2009 -0700

    Compile targetting 1.5.

commit 19883d03be8026e0fafffa09761a83421a424fda
Author: Dustin Sallings 
Date:   Tue Oct 13 13:44:19 2009 -0700

    Configurable max reconnect delay.

commit 8d9387d3333eaaa39a0e3ade98462a39c8dff906
Author: Dustin Sallings 
Date:   Tue Oct 13 13:37:52 2009 -0700

    Better reconnect back-off formula.

commit 4e4b9ff3afba4282fa21d719fe9095be3fc97cc7
Author: Lewis Zimmerman 
Date:   Tue Oct 13 13:31:02 2009 -0700

    Fixed bug in sequence number wrapping (bug90).
    
    If the cas op on seqNumber fails, rv never gets updated and will loop
    until seqNumber wraps at least one more time. proposed fix increments
    seqNumber whether or not the cas succeeds: if another thread was able
    to swap to 0 before we were, we're still good to go.

commit d0210bdd217fa826941da060adb6455c4197c9a0
Author: Dustin Sallings 
Date:   Fri Sep 25 18:55:28 2009 -0700

    Some doc and style cleanup.

commit 2a1dedf5a20c9bfae4a638883f631bd857bef232
Author: Dustin Sallings 
Date:   Fri Sep 25 18:47:12 2009 -0700

    Moved ketama stuff to util.

commit 547cdc5cd9d5a9917c4315c2817d40f6c8e53811
Author: ciaranj 
Date:   Fri Sep 25 11:48:31 2009 +0100

    Modified the KetamaNodeLocator code to accept configuration object

commit 0cc760551ffcc10b5b59a50bb43e151420ee75c4
Author: Dustin Sallings 
Date:   Thu Sep 24 11:17:23 2009 -0700

    Cleaned up all javadoc warnings.

commit 357a5b882589186a5529eff42a73c2830561a17b
Author: Dustin Sallings 
Date:   Thu Sep 24 11:05:53 2009 -0700

    Javadoc can't deal with ç for whatever reason.

commit ac97f92816dfbc9c5d15f84aefbb0d84bf41ead8
Author: Dustin Sallings 
Date:   Thu Sep 24 11:02:00 2009 -0700

    Fix javadoc @see links.

commit a5ebc4c7188fdb7299c1870682060859bc8c0704
Author: Dustin Sallings 
Date:   Thu Sep 24 10:54:22 2009 -0700

    Added a package.html for compat.log

commit a0d3b0aff8a7508a656bfbe8e119f9a395a2df1e
Author: Dustin Sallings 
Date:   Thu Sep 24 10:50:40 2009 -0700

    Cleaning up docs a bit.

commit de9867ef5bd8778d0f3839918ffc581d7ab63964
Author: Dustin Sallings 
Date:   Thu Sep 24 09:53:29 2009 -0700

    Update the toplevel package.html

commit b6e0183cb9663f352457d8a1e243ce311c401fd4
Author: Dustin Sallings 
Date:   Wed Sep 23 15:34:59 2009 -0700

    Updated site task.

commit 906c54e2b2957042634e5c14015c503c3452c16f
Author: Dustin Sallings 
Date:   Wed Sep 23 15:29:11 2009 -0700

    Use emma as the coverage tool.

commit c171f5bd5baecf68e28146b2a34d7e60a9c7dca7
Author: Dustin Sallings 
Date:   Wed Sep 23 12:30:37 2009 -0700

    Fix workaround for manifest since the buildr fix broke the workaround

commit 5486bd9d5778959ba024c1ee421942a5739a3b14
Author: Dustin Sallings 
Date:   Wed Sep 23 10:09:52 2009 -0700

    Auto-compute latest released versions from each series.

commit 3def22f973872220636ba68952155f6475791d95
Author: Dustin Sallings 
Date:   Wed Sep 23 09:34:38 2009 -0700

    Put a ceiling on set optimizations.

commit 41f16e4634c31d30b3760e6f589de64f44edf66f
Author: Dustin Sallings 
Date:   Tue Sep 22 23:48:54 2009 -0700

    Convenient way to select a node location type.

commit 04c12dff94ce388d3635b44370c4b0b4908f6471
Author: Dustin Sallings 
Date:   Tue Sep 22 23:02:27 2009 -0700

    Added javadoc for all the ConnectionFactoryBuilder methods.

commit 03d59809802eba6eb97f57e2ecb51fe126b5a53d
Author: Dustin Sallings 
Date:   Tue Sep 22 22:51:38 2009 -0700

    Add a convenient protocol setter.

commit 334b5a99d315a06000e52b206368ccf0598fbe6f
Author: Dustin Sallings 
Date:   Tue Sep 22 17:45:58 2009 -0700

    Add Nagle algorithm configuration to ConnectionFactoryBuilder.

commit 1492f098dbc33460f13efcd03df9c0919874d1e3
Author: Dustin Sallings 
Date:   Tue Sep 22 16:45:17 2009 -0700

    Use a queue factory to create queue instances for the builder.

commit 0e0c0994db143476171737242ad7ac33950a3262
Author: Dustin Sallings 
Date:   Mon Mar 2 15:18:44 2009 -0800

    ConnectionFactoryBuilder

commit 7596f401a2c515a013656a26f5c8915403dc7f79
Author: Dustin Sallings 
Date:   Sat Sep 19 23:53:59 2009 -0700

    Optimize binary protocol sets.
    
    This optimization works in a similar fashion to the GET optimization,
    but is binary protocol specific.  Effectively, all mutation operations
    are folded into quiet ops and the responses are dispatched as implied
    positives when the operations are known to have finished.

commit 4888bb959710df83778bca98230bd7b07d3a13bc
Author: Dustin Sallings 
Date:   Sat Sep 19 15:14:52 2009 -0700

    A simple loader benchmark of sorts.

commit a849a3f5788e613eb1c9d09a3c6bbeabfc9c2470
Author: Dustin Sallings 
Date:   Sat Sep 19 14:45:58 2009 -0700

    Refactored CacheLoader to have a push mechanism.

commit 641678fd587870da084d3b892f26d84b3b933019
Author: Dustin Sallings 
Date:   Sat Sep 19 01:43:32 2009 -0700

    Added a bulk loader API.

commit 507432ecf667916767980b22fb2fc902d806f119
Author: Dustin Sallings 
Date:   Fri Sep 18 19:57:10 2009 -0700

    Refactor optimization control.
    
    No longer a dangerous mutable field in the connection.  The
    ConnectionFactory defines it and it's used throughout the life of the
    connection.

commit ac87ce24b2849af5fe4c4b6688b7d7aefaa37c88
Author: Dustin Sallings 
Date:   Fri Sep 18 00:58:09 2009 -0700

    Trace handling node in broadcasts, too.

commit c065aa5c01bd42e18c3729ec0fbb3b46edf28247
Author: Dustin Sallings 
Date:   Fri Sep 18 00:43:53 2009 -0700

    Handle a couple of null cases in op tracing.

commit 0894556d36c6b204ce93d2b7504aee81abfda6f5
Author: Dustin Sallings 
Date:   Thu Sep 17 23:43:25 2009 -0700

    Provide some breadcrumbs about which nodes were in contact during timeouts.
    
    The root cause of an OperationTimeoutException should have something
    that looks like this:
    
    Caused by: net.spy.memcached.internal.CheckedOperationTimeoutException:
           Timed out waiting for operation - failing node: /127.0.0.1:11213
    
    The actual failing operation is available from the
    CheckedOperationTimeoutException in case someone wants to do something
    particularly special with it.

commit 6edff67173cb80486a7e5ef29a5f6311b7e9b105
Author: Dustin Sallings 
Date:   Thu Sep 17 22:39:10 2009 -0700

    Refactored futures into toplevel classes.

commit f850e9d64ec9b5150cf14bf880733c0ef4d8d68b
Author: Dustin Sallings 
Date:   Sat Sep 5 23:52:34 2009 -0700

    Test for TranscodeService.

commit c4fd35d3d64d95a279d6150a2c99aa4c5e4919fd
Author: Dustin Sallings 
Date:   Sat Sep 5 23:28:26 2009 -0700

    TranscodeService should not be a singleton.

commit baf3a9f154e329e8ccd5932e43c0010b6ba569be
Author: Joseph Hart 
Date:   Sat Sep 5 22:27:18 2009 -0700

    Asynchronous transcoder service.

commit 339f6c474ea9613c5181991617b236967c5efed8
Author: Wang Nan 
Date:   Sat Sep 5 22:09:42 2009 -0700

    Conditionally allow enabling/disabling the Nagle algorithm.
    
    Off by default.

commit bef4c72adb262b138edfef93994d6dae7d468ac9
Author: Dustin Sallings 
Date:   Thu Sep 3 10:40:05 2009 -0700

    buildr cobertura update

commit bcffdf9c972685b6179151e0e42bfdbe7622c3f2
Author: Dustin Sallings 
Date:   Thu Sep 3 10:39:53 2009 -0700

    New build_info for jruby-based buildr.

commit 5ca04897525922d1f200b44f57e5edfdc4b324ed
Author: Dustin Sallings 
Date:   Thu Aug 13 00:21:54 2009 -0700

    Handle failures on initial connection.
    
    If a ConnectException is thrown while performing the initial
    connection, just queue it and let it reconnect naturally.
    
    Note that initially tried running *all* connections through the queue,
    but it made startup considerably slower

commit 69974715592fe6fe6f761e28216ec0a943ab5783
Author: Dustin Sallings 
Date:   Thu Aug 13 00:12:15 2009 -0700

    Testing a really long CAS identifier.
    
    (issue 80)

commit b634d0ae546a299bb570d8877434261ba32f76a7
Author: Dustin Sallings 
Date:   Sat Jun 20 18:41:54 2009 -0700

    Allow CAS Mutator to work in a mutation-only mode.
    
    When initial is null, do not initialize the value.

commit 4999cc49c3c37aa4d3eac9b4cb2134dc45df7862
Author: Dustin Sallings 
Date:   Sat Jun 20 18:20:00 2009 -0700

    Use a client interface for CASMutator.

commit c3d30fa8f5efabe669e46a5cd2cefc6a0dd94071
Author: Dustin Sallings 
Date:   Sat Jun 20 18:02:19 2009 -0700

    Fix teardown race condition in TCPMemcachedNodeImpl.

commit 0cd55a340a3625c431d433313d35bbf837a9998e
Author: Dustin Sallings 
Date:   Tue Apr 14 13:55:25 2009 -0700

    Fix bug when a reconnect is scheduled simultaneously for two connections.
    
    This is a time-sorted map, so adding one could kick another one out.
    As it's rare, detecting it and fudging the reconnection time is the
    least intrusive and safest way to prevent things from getting dropped.

commit d5643e7ba5d825dda6002b61194fe079702b18ed
Author: Dustin Sallings 
Date:   Thu Apr 2 08:28:17 2009 -0700

    Update compat docs and errors to reflect compat packaging.

commit c6f8a9783af431c5f9ec4f8d178f10c4698fb46c
Author: Dustin Sallings 
Date:   Wed Apr 1 17:18:23 2009 -0700

    Allow transcoders to say how big objects they cache are.
    
    This allows someone to, for example, have a transcoder for small
    objects only, or allow access to a server that supports arbitrarily
    large objects.

commit c2d1b84658040ac2a7c8c1737e59e4f45d46218e
Author: Dustin Sallings 
Date:   Sun Mar 29 01:37:19 2009 +0100

    Fix stat parsing for values with spaces and add some tests.

commit f6ea239d52d41c3a656ad50dac12035bc8a01098
Author: Dustin Sallings 
Date:   Sat Mar 21 01:48:35 2009 -0700

    Better connection observation reporting.
    
    ConnectExceptions are not reported as they occur before connections
    are established, but any other exception that occurs during the
    lifetime of an exception is.

commit c7d6455567555527f7dd371b726104e2d388d6ca
Author: Dustin Sallings 
Date:   Wed Mar 18 13:46:37 2009 -0700

    Raise an IllegalArgumentException on blank keys.
    
    Much thanks to Alexander Zaitsev for pointing this out so I can save
    someone else from his headache in the future.

commit 179e8cfd735de902608e246acce09601b60f4074
Author: raykrueger 
Date:   Thu Feb 26 06:02:51 2009 -0600

    Moved BaseMockCase into src/test.
    
    Maven uses separate classpaths for test vs main compile. This class
    didn't compile as the jmock jar is only in the test classpath.

commit 18662e634fed513a79f675503c4bad0b76528f2a
Author: Dustin Sallings 
Date:   Fri Mar 6 12:09:46 2009 -0800

    Link to the changelog.

commit bec30bebd368d6399c665bda3dab6ed6bec63386
Author: Dustin Sallings 
Date:   Wed Feb 25 13:40:28 2009 -0800

    Added another version to the buildfile.

commit c9df12f0e7513beb33a6e2525f1d3fa91c11742f
Author: Dustin Sallings 
Date:   Mon Feb 16 10:02:01 2009 -0800

    A Map interface to memcached.
    
    This obviously has limitations -- specifically around attempts to
    iterate the cache.  Any place where a Map is used as a cache, this
    should make a nice swap-in replacement, though.

commit aebdc88063f0a83c1e48e5ae37b78b083829b75b
Author: Dustin Sallings 
Date:   Sat Feb 14 18:33:09 2009 -0800

    Allow the default transcoder to be specified.
    
    This was done before by a gross mutator.  The ability to specify it
    was obvious, but I overlooked it anyway since I always use the default
    default.

commit d432609b4e8120c075ea4590379060e78de288d6
Author: Dustin Sallings 
Date:   Fri Feb 13 10:20:44 2009 -0800

    Added the Cancel failure mode.
    
    This failure mode simply cancels any operations heading towards a
    broken server.

commit ca8d058910024d373c2eda19438af4937ff70ffc
Author: Dustin Sallings 
Date:   Fri Feb 13 10:13:03 2009 -0800

    Renamed FailingServerTest to RedistributeFailureModeTest.

commit c13f26f74d957ae7d93ca2421f42bb1989fa629a
Author: Dustin Sallings 
Date:   Fri Feb 13 10:05:26 2009 -0800

    Removed setTranscoder from client.
    
    This was not thread safe and shouldn't generally be done.  You can
    pass in a transcoder on a given operation, but attempting to change
    the current one would require me to at least make it volatile.

commit dc367300944b8e86dd2c62a484f0131303b37b78
Author: Dustin Sallings 
Date:   Fri Feb 13 09:53:54 2009 -0800

    Fix really terrible misspelling of mutator.
    
    This is not a backwards-compatible change, but I doubt anyone is
    implementing MutatorOperations -- at least, anyone who wouldn't prefer
    them to be spelled correctly.

commit e3a676ce8f4e1a244604872e7ed8fe696d7365bf
Author: Dustin Sallings 
Date:   Thu Feb 12 10:39:26 2009 -0800

    Remove compat JDBC closing.
    
    There's no DB stuff here.

commit c8b07fcd92001bd7a348bf354f413203f4cf8954
Author: Dustin Sallings 
Date:   Thu Feb 12 10:38:26 2009 -0800

    Exclude some uninteresting test stuff

commit b149016b3d0e60da069e287b44c7873c8760870c
Author: Dustin Sallings 
Date:   Thu Feb 12 10:18:51 2009 -0800

    Handle multi-get dispatch fanning out into individual gets.
    
    This covers the case of a multi-get targeting a downed server, getting
    pulled out and redistributed individually to a bunch of individual
    operations on other servers.
    
    Note that this is (should be):
    
     1) Rare (you don't have servers dying a lot, do you?
     2) Later optimized into per-server multi-gets when prepped for the wire.

commit ffb991d32181e954715075c68e163c05b299959e
Author: Dustin Sallings 
Date:   Thu Feb 12 08:36:56 2009 -0800

    Implmement and test get operation cloning.

commit 91aa81aea74698ea0b0a94fcbaadc1274d198f57
Author: Dustin Sallings 
Date:   Wed Feb 11 19:09:47 2009 -0800

    Tests around cloning operations.

commit 8c8fc4ca1989950ba43d676d571837c51db07bc8
Author: Dustin Sallings 
Date:   Wed Feb 11 19:02:36 2009 -0800

    Factory change to allow CAS to use different mutation ops.

commit 3f4a23411b3c8049dc0b18ad3bb68211630e1bff
Author: Dustin Sallings 
Date:   Wed Feb 11 13:59:15 2009 -0800

    Operation cloning.

commit 7cc43e38ca9dc5af849622a948d55829a38f8a4e
Author: Dustin Sallings 
Date:   Wed Feb 11 13:48:49 2009 -0800

    Added accessors to internal data structures of mutator ops for cloning.

commit 92933142bc3b239705426a4aa02f28c419cf54c8
Author: Dustin Sallings 
Date:   Wed Feb 11 13:44:31 2009 -0800

    Added accessors to internal data structures of store ops for cloning.

commit 29a15cf5f5b9402cbb75bbb30ff61db910028f37
Author: Dustin Sallings 
Date:   Wed Feb 11 13:36:36 2009 -0800

    Added accessors to internal data structures of cat ops for cloning.

commit bbdb99d07488f1e3f170d1dd1ec76f5f78dca3f9
Author: Dustin Sallings 
Date:   Tue Feb 10 19:11:21 2009 -0800

    Added accessors to internal data structures of CAS ops for cloning.

commit 2620f446ac08f263e0aaa23ad68758da63b45c83
Author: Dustin Sallings 
Date:   Tue Feb 10 18:26:30 2009 -0800

    Added base operation clone mechanism.

commit 6ced6e51e5d94ba18b27c65757625012a66feea1
Author: Dustin Sallings 
Date:   Tue Feb 10 18:40:34 2009 -0800

    Beginning of the redistribute failure strategy.
    
    This changed the default strategy used throughout tests since the new
    strategy is not complete and prematurely cancels all operations
    destined for the broken server.

commit d8d5f11e90fcd8dd9a0245fa5483ca5824dfd030
Author: Dustin Sallings 
Date:   Tue Feb 10 18:33:35 2009 -0800

    Split up commands into Keyed and other operations.
    
    KeyedOperations lets us know for which operations we know the original
    keys so we can do things like find another server to play the
    operations against.

commit 4caa1df73e5a581a408b0a6f1bc150e95b8ae0ca
Author: Dustin Sallings 
Date:   Wed Feb 4 18:52:24 2009 -0800

    When FailureMode is retry, queue even when inactive.
    
    This is *most* of the implementation of FailureMode.Retry.

commit cf4b55f4aed2b9014c301d4b3f230b9dce77b7df
Author: Dustin Sallings 
Date:   Wed Feb 4 18:51:58 2009 -0800

    Introduction of failure modes.

commit 88ed8e28432026ce068c060b120569c95252380f
Author: Dustin Sallings 
Date:   Wed Feb 4 18:40:20 2009 -0800

    MemcachedThreadBench main should use reasonable defaults.
    
    This almost got profiling working in netbeans, but not completely.

commit 2a21334927bca74c23589577ac5082f17512d8c1
Author: Dustin Sallings 
Date:   Tue Feb 10 18:44:33 2009 -0800

    Fix a test that broke with the internal queue changes.

commit 74c5323077afe9b8fef5901bc62d88f8d489c6c7
Author: Dustin Sallings 
Date:   Tue Feb 3 17:23:28 2009 -0800

    Moved MemcachedThreadBench into the manual test dir.

commit 99ba4b01ee1cc06df1666576833e831d0daff35c
Author: Dustin Sallings 
Date:   Tue Feb 3 17:14:20 2009 -0800

    Update documentation for DefaultConnectionFactory.
    
    The queue implementations were documented and should probably be
    reflected.

commit a84570da0c77ef0877eb08d5ec8bc39a8e5198e0
Author: Dustin Sallings 
Date:   Tue Feb 3 10:21:36 2009 -0800

    Converted to an unbounded LinkedBlockingQueue for internal queues.
    
    The external queue is still bounded, but the internal queues won't
    overflow by default (at the cost of more memory during spikes).

commit e6a8bdae1c95067d8be3b75ed24668a400b2a7e1
Author: Dustin Sallings 
Date:   Tue Feb 3 08:46:36 2009 -0800

    Make QueueOverflowTest a bit more standalone.
    
    I'm thinking about changing internal queue types, and would like the
    test to still be able to overrun.

commit 4f6817afb132f0818a6cd2684b917e3583ab7e3b
Author: Dustin Sallings 
Date:   Mon Feb 2 12:04:46 2009 -0800

    Added the ability to pass in initial observers at construct time.
    
    With this, observers can observe the *initial* connection, which (as
    the test demonstrates) can allow a caller to block until all (or at
    least enough) connections are established before proceeding.

commit 9870d6e9eab9fa65239a8291e7d7e56fbcf2afa6
Author: Dustin Sallings 
Date:   Mon Feb 2 11:12:30 2009 -0800

    Added support for connection state observers.

commit 262d326a4fd225f0185b024b5ae0e1e22030ac1d
Author: Dustin Sallings 
Date:   Mon Jan 26 22:58:06 2009 -0800

    Increased code coverage some with new compat code.

commit c2d8c778fbc64c0687b135beb3af53a27270b65f
Author: Dustin Sallings 
Date:   Mon Jan 26 22:37:57 2009 -0800

    Remove dependency on spy.jar.

commit bc1ef9e47bf6444483d480f9162a3c2fc9539e72
Author: Dustin Sallings 
Date:   Sun Jan 25 23:39:10 2009 -0800

    Asserting a non-null to make a compiler check happy.

commit 54f5826eede8fb69cbb5cedd297f4f3c92256bde
Author: Dustin Sallings 
Date:   Sun Jan 25 23:37:33 2009 -0800

    Added a test to demonstrate a solution to bug 42.

commit 46b6d5f0c98e4067c6a3f88c7c3c5c2c252f2fd8
Author: Dustin Sallings 
Date:   Sun Jan 25 23:16:48 2009 -0800

    Updated junit eclipse dependency.

commit df6a205a9a239da9ec8373d31bef8e95708cd4ac
Author: Dustin Sallings 
Date:   Sat Jan 17 02:41:52 2009 -0800

    Added a modeline to the build file

commit 8715c4dedfa25e8cb8167733d00ea9889c756835
Author: Dustin Sallings 
Date:   Sat Jan 17 02:41:43 2009 -0800

    Updated copyrights to 2009

commit 9b2b4be73ee4a74bf6d0cf47f89c33753a5b5329
Author: raykrueger 
Date:   Fri Dec 19 11:27:37 2008 +0800

    ignore idea project files
    
    Signed-off-by: Dustin Sallings 

commit c0cd61aa269d02ebf0337cff6a1194c27dbeff1d
Author: Dustin Sallings 
Date:   Fri Dec 19 09:27:28 2008 -0800

    More tries to get a timeout.
    
    This should happen sooner or later.

commit 8c489ffa2e714eff476b4090f7ce778f4aacd20f
Author: Dustin Sallings 
Date:   Thu Dec 18 20:40:40 2008 -0800

    Made the timeout test run on every protocol on every build.

commit fb326d5205cf5d501029f6d75befb81e52c38b62
Author: Dustin Sallings 
Date:   Thu Dec 18 20:24:38 2008 -0800

    Added a test for bug 35.
    
    I can't reproduce this problem on OS X at least.

commit fba04e99e617d9481a8d21cb83f597115da284b7
Author: Valeri Felberg 
Date:   Wed Dec 17 10:58:13 2008 -0800

    Support passing an expiration date into CAS operations.

commit 6c4ae7a86be5d42d2c9d41e00f15a55142bbbeb6
Author: Dustin Sallings 
Date:   Wed Dec 17 10:41:28 2008 -0800

    Ignore this .settings thing that eclipse dropped in.

commit 777627fd0f7c959a94d3b1a62d51a83421fb8807
Author: Dustin Sallings 
Date:   Tue Nov 18 22:09:05 2008 -0800

    Removed unnecessary warning suppression.

commit 84b422f382e1b1ce8367c10802d48f86f7cb2f92
Author: Dustin Sallings 
Date:   Thu Nov 6 20:30:52 2008 -0800

    Document, but don't declare OperationTimeoutException (unchecked).

commit df7d3b579b1f440a078fc6f6ae92cd9e78fe1390
Author: Dustin Sallings 
Date:   Thu Nov 6 20:26:07 2008 -0800

    Document the IllegalStateException that's thrown on queue full.

commit e5afba2c538fdf28a441bf0d28671dd73fe33af5
Author: Dustin Sallings 
Date:   Fri Oct 31 23:20:01 2008 -0700

    Test the readonliness of MemcachedNodeROImpl.

commit c92caa7441e817f71f4eb7bd39d5e805fe87d312
Author: Dustin Sallings 
Date:   Fri Oct 31 22:57:48 2008 -0700

    Tests for node location cloning.

commit ddb72ddd33599f633649c11f091b8ef38443c2a5
Author: Dustin Sallings 
Date:   Fri Oct 31 22:12:51 2008 -0700

    Make NodeLocator instances responsible for producing RO clones.

commit 60ceb53bbd02f2095808872a9f88e2bfea6b1593
Author: Dustin Sallings 
Date:   Thu Oct 30 18:30:44 2008 -0700

    Retabbed some code.
    
    Need to be a bit more careful here...

commit 9d4585a1cf4cd137e5078127243fcfdd0031e76d
Author: Dustin Sallings 
Date:   Thu Oct 30 18:29:47 2008 -0700

    Test for mutation with default and expiration.

commit 406921af9363ea31aeedb292fe5ec0b6b08374dc
Author: Nick Brachet 
Date:   Thu Oct 30 18:29:33 2008 -0700

    Added incr and decr with default and expiration.

commit a320dec0146a248fc1aef025876a69dd03081939
Author: Dustin Sallings 
Date:   Thu Oct 30 18:23:23 2008 -0700

    Be sure to pass the expiration down in mutateWithDefault.
    
    This is for all of the corner cases in the ascii version.

commit 77629a62eb4ddecec46321bb238b81cb637e0817
Author: Dustin Sallings 
Date:   Wed Oct 29 23:23:15 2008 -0700

    Include a link to an older version in the site.

commit 0898832030458f6556e0547787a5d4d0b1f8e003
Author: Dustin Sallings 
Date:   Mon Oct 27 21:40:39 2008 -0700

    Set a value before attempting to look at the slabs stats.
    
    The slab stats test will return nothing if there have never been any
    values added (thus any slabs created).

commit 0e7dd357469cda1e629b28879b4cc0d8ba151d15
Author: Dustin Sallings 
Date:   Fri Oct 24 20:23:28 2008 -0700

    Added a baseline test to get slab stats.

commit 87312691e07074bcabeb316fc3ab9439f7e895d6
Author: Dustin Sallings 
Date:   Fri Oct 24 20:23:18 2008 -0700

    Support an argument to stats.

commit 75384adf826bf0338734a5bdb1e972bd2eaa3839
Author: Dustin Sallings 
Date:   Sun Oct 19 15:22:20 2008 -0700

    Got rid of workarounds for binary stats problems.
    
    In the latest code, Toru made sure all result packets contain the
    requested opaque.  No magic and no 0.

commit bd17fe6ebf418eca016e9ea13b15b0ae2d2fc3bc
Author: Nick Brachet 
Date:   Sat Oct 18 16:50:21 2008 -0700

    Asynchronous incr/decr with no default.
    
    Theoretically, this can work with default values as well, but only in
    the binary protocol.  Getting this to work with the text protocol
    would likely be quite painful.
    
    http://code.google.com/p/spymemcached/issues/detail?id=12

commit 23471266e7c3f80818b45773381a6f0765f69a22
Author: Dustin Sallings 
Date:   Sat Oct 18 17:01:31 2008 -0700

    Update license copyright.

commit d4f82430eec6edd14131f84da7094e6237a275f2
Author: Dustin Sallings 
Date:   Sat Oct 18 14:41:47 2008 -0700

    Refactored string transcoder testing to work more generically.

commit f64c567bc153f4282e3b086c56238d911b1f4b67
Author: Dustin Sallings 
Date:   Sat Oct 18 14:10:28 2008 -0700

    Miscellaneous test code cleanups.
    
    I've got some tool that complains about various things it thinks I
    might be doing wrong.

commit fc1602e4685a3f92e944ebd78cd60b5469fdd279
Author: Dustin Sallings 
Date:   Sat Oct 18 14:07:03 2008 -0700

    Removed a cancellation test for a method whose functionality was gutted.

commit d16a106ac344ddba057ac05a966790210558bf55
Author: Dustin Sallings 
Date:   Sat Oct 18 14:05:53 2008 -0700

    Unit testing for WhalinV1Transcoder.

commit c7918a164912e2c7dde8765d9fd72e68f069ad98
Author: Boris Partensky 
Date:   Sat Oct 18 14:03:09 2008 -0700

    Whalin V1 compatible transcoder.

commit b292d0387fa426f96ed69176099d96707b961085
Author: Dustin Sallings 
Date:   Sat Oct 18 13:27:08 2008 -0700

    Updated copyright info.

commit 4b92a81750ab39207b2a6ca26180720595c95aca
Author: Boris Partensky 
Date:   Fri Oct 17 08:56:12 2008 -0400

    fixes for Whalin compatible transcoder.
    
    corrected Boolean encoding and added Character support

commit df6cd926366f46878bf37d27cefce03fa922ad14
Author: Dustin Sallings 
Date:   Fri Oct 17 09:33:35 2008 -0700

    Refactored the transcoder tests for reuse.

commit 4a6e7d1cf1861befaed921a3b9948bf66e0c4508
Author: Dustin Sallings 
Date:   Fri Oct 17 09:08:36 2008 -0700

    Added char testing for transcoders.

commit 472337cab2c2394931df97621a01946124ccac24
Author: Dustin Sallings 
Date:   Wed Oct 15 01:28:08 2008 -0700

    Work around a server bug in bin stat opaque validation.

commit d0259d9271d459826ea69c063c96f5c467a040d4
Author: Dustin Sallings 
Date:   Tue Oct 14 21:50:24 2008 -0700

    Binary stat support.

commit b609da401bea7bac7aec4e04cf41817ca62d322e
Author: Dustin Sallings 
Date:   Wed Oct 15 01:40:52 2008 -0700

    Remove support for hold values on deletes.
    
    This functionality was removed after we all agreed it was confusing as
    1157f3c5ce25918558781bd2207b6b6de702dd17 in memcached by Trond Norbye
    (merged in by Toru).  Mon Jul 28 17:55:41 2008 +0900
    
    That ID will probably be killed off by a rebase.

commit 8262a2a532d740a26accd4291ab2d96fa2e58daa
Author: Dustin Sallings 
Date:   Sat Oct 4 00:24:04 2008 -0700

    Don't log when we get a ClosedChannelException while shutting down.

commit c7213d018047b6a17cfac88953e7cacf9ab48b10
Author: Robey Pointer 
Date:   Mon Jul 21 16:48:51 2008 -0700

    if the memcache server disconnects, try to notice.

commit 255d13bdb16e66175c58bf16a15010555e3dced7
Author: Dustin Sallings 
Date:   Thu Oct 2 21:39:57 2008 -0700

    Handle fast-failure on an attempted reconnect.
    
    http://code.google.com/p/spymemcached/issues/detail?id=31

commit e5ebc572775fb7c197381fc5e3d8ffaab3540a9a
Author: Dustin Sallings 
Date:   Thu Oct 2 21:22:11 2008 -0700

    If we attempt to read when we don't have anything to read, reconnect.
    
    This seems to happen in some strange server-error cases where the
    server short-circuits the connection.  This situation has shown itself
    when we've sent something too large into the server.  Precautions have
    been taken to prevent that exact thing from happening again, but this
    is a better way to handle an unexpected state.
    
    I'm not sure how we end up still having data to receive when we've
    already thrown away the ops, but tearing down the connection is a
    clean way to recover from a bad state.

commit f6d32148d88b1e0f35cdbdc553ce57b1b449aa99
Author: Dustin Sallings 
Date:   Thu Oct 2 20:17:26 2008 -0700

    Throw an exception if we attempt to store data we know is too big.
    
    This will avoid a few problems people have encountered.  I implemented
    it with a somewhat early IllegalArgumentException because it was the
    surest way to cover every case given compression and several paths in
    to sets.

commit aa2e8a8bf4b1de88be6715d4dccfee0ef51fbdc5
Author: Dustin Sallings 
Date:   Thu Oct 2 19:47:43 2008 -0700

    Fix null handling bug introduced by 6e2dbb3

commit 47f15d504960f1779bad1e44275454af05a6a973
Author: Dustin Sallings 
Date:   Thu Oct 2 18:50:36 2008 -0700

    Minor warning fix.

commit 6e2dbb3aac1a2980bc2252670467e219d803a3d8
Author: Kristian Eide 
Date:   Thu Oct 2 11:02:54 2008 -0700

    Push async get decoding into the client thread instead of the IO thread.

commit 0fa9e7d81a07ad73f15f55c0ce68aa5caf9ea087
Author: Nick Brachet 
Date:   Sat Sep 20 19:56:38 2008 -0700

    Default for incr should be a long.

commit 27ad2c39093c14397c5b49a30824997fbee45b1d
Author: Nelz 
Date:   Thu Sep 11 15:34:05 2008 -0700

    Extract a MemcachedClient interface.
    
    An interface enables mocking for any users of the MemcachedClient.

commit 02c1f2e02e92dbb47b65a2e73feb62a206f6b433
Author: Kristian Eide 
Date:   Fri Aug 29 11:46:25 2008 -0700

    Decode async bulk gets outside of the IO thread.
    
    The same work still needs to happen for one-off gets, but this should
    help allow the IO thread to focus on IO while consumer threads
    distribute the more CPU-intensive work.

commit b10c4a81a92944fc6337f2403042255933122c16
Author: Dustin Sallings 
Date:   Thu Jun 5 22:39:57 2008 -0700

    Got build working under buildr 1.3.1.1

commit 919b7323f035a3add0cad3f97404afcfcb9d599e
Author: Nelz 
Date:   Thu Jun 5 21:45:26 2008 -0700

    More consistent hash proving.

commit 03f8b4301cc4b1bd6924ae02a1c20b14677727a8
Author: Dustin Sallings 
Date:   Mon May 26 23:57:28 2008 -0700

    Killed off a slightly elusive bug that was causing sporatic cancellations.
    
    Whenever a read returned in the binary protocol without having read
    enough bytes to fill a header packet, an NPE would be fired that would
    cause us to disconnect from the server and cancel all in-flight
    operations.
    
    This happened occasionally in one of my tests and was rather a pain to
    track down.  It likely never affected anyone since I doubt anyone is
    actually using the binary protocol anywhere today.

commit 687aa9ccc1c9361b2cd6f1d769e70e4438d98d9f
Author: Nelz 
Date:   Fri May 16 12:02:25 2008 -0700

    Adding a standard ConnectionFactory to facilitate consistent hashing.

commit 3d806bac909790a0fee4c655a5d005ecd30d464a
Author: Dustin Sallings 
Date:   Wed May 14 09:28:35 2008 -0700

    Allow the input, op read and op write queues to be individually specified.
    
    By default, the read queue is 10% larger than the input queue.
    
    With a sufficiently large op read queue, it's possible to never
    internally overflow, but correct values are likely
    application-specific.

commit 9de48599d5a18cb5d59779e7c28713b517285aa4
Author: Dustin Sallings 
Date:   Tue May 13 22:41:39 2008 -0700

    Updated delete documentation.

commit f1969bf1f88b62a71dcc9f392c4c9f0756fcea09
Author: Dustin Sallings 
Date:   Tue May 13 22:19:42 2008 -0700

    Some refactoring in the futures to get more consistent behavior.

commit 0be1844a79e2d9ecd635e770faf479f3a221be87
Author: Dustin Sallings 
Date:   Tue May 13 22:18:58 2008 -0700

    Read before writes and expect IllegalStateException.
    
    These are two measures that are helping with the queue overflow
    problems.
    
    Firstly, the IllegalStateException is thrown whenever you attempted to
    add to a queue that's full.  If that happens internally, I don't want
    the IO thread to crash, so I add it to the normal ``expected
    exceptions'' list.
    
    Secondly, reading before writing helps keep the read buffer ready for
    new data.  When writing first, the write will have to transition to a
    read and may cause the read buffer to overflow.  It still may happen,
    but by servicing the reads first I can at least get the complete ones
    popped out before piling new ones in (since writes are almost always
    smaller and likely to transition).

commit 6a38bf7b3b190035e35133e8b08056ceb86d2eaf
Author: Dustin Sallings 
Date:   Tue May 13 20:52:11 2008 -0700

    Tests for queue overflow behavior.

commit d578d1b1931cfdf006190c034b7d7cc4fba84efd
Author: Dustin Sallings 
Date:   Mon May 12 23:06:02 2008 -0700

    Some fixups from bug 24 relating to overfilling queues.

commit f96758feb52f4e145aeac02e78b16faaa42dd37e
Author: Dustin Sallings 
Date:   Sun May 11 00:58:12 2008 -0700

    Update the buildr version number -- always forget that.

commit 6002b14da1adb1460d10c7cdee79c0e56e1e6dad
Author: Dustin Sallings 
Date:   Sun May 11 00:37:16 2008 -0700

    Lengthen the timeout in the text protocol test to match the binary.

commit 0f182a56f902a19aed731e636306e89a54bc652d
Author: Dustin Sallings 
Date:   Sun May 11 00:34:27 2008 -0700

    Turning the timeouts way up during tests.
    
    I manage to do something that slows stuff down in my full test plan
    which leads to spurious failures.
    
    This may be hinting at a bug of some type, or perhaps some bad
    defaults, but this code isn't attempting to test timeouts so they
    should never get in the way.

commit 1716023576970f56e98e1f4d92df4ed9bcb5b720
Author: Dustin Sallings 
Date:   Sun May 11 00:07:46 2008 -0700

    buildr 1.3 is not ready for me.
    
    Revert "Updates for a newer version of buildr."
    
    This reverts commit 0fcb055473fd567308b8c17edec4bdfbd1df6f32.

commit 04df553918fd718eabb031c7084ea272e81fd50c
Author: Dustin Sallings 
Date:   Sat May 10 22:28:49 2008 -0700

    Smarter assertion check test.
    
    The previous one passing when assertions weren't enabled.
    Must test the tests.

commit 1d71864711c4135956e4bbbebc14135eb0ec8373
Author: Dustin Sallings 
Date:   Sat May 10 19:09:57 2008 -0700

    Test fix.  Invalid connections shouldn't fail to shut down.
    
    I think there may be a bigger bug around this, but it only occurs when
    trying to shut down a connection that shouldn't've started due to
    someone writing a broken connection factory, so I think we can live
    with it.

commit 0fcb055473fd567308b8c17edec4bdfbd1df6f32
Author: Dustin Sallings 
Date:   Fri May 9 11:11:32 2008 -0700

    Updates for a newer version of buildr.

commit dbf7040ecb19139729f9308205aa3aacef3954cb
Author: Dustin Sallings 
Date:   Sun May 4 19:41:24 2008 -0700

    Disabled test that spuriously fails.

commit 2603ac25e863283170eb42e5bfc3a29eedf30a07
Author: Dustin Sallings 
Date:   Sat May 3 16:48:44 2008 -0700

    Wrote a test for async get bulk with a transcoder.

commit 57ccff1274aa4bd921260fdd41ee2e537e7d2cc1
Author: Dustin Sallings 
Date:   Sat May 3 16:44:31 2008 -0700

    Make sure all of the CASMutator constructors are at least run once.

commit 7c7be67005944f044760a7217d2b0dd86c46636d
Author: Dustin Sallings 
Date:   Sat May 3 16:38:07 2008 -0700

    Added some negative tests for prepend/append and found some bugs.
    
    Turns out the ``not found'' error for prepend and append is different
    from that of other commands so I needed to make a case for it.

commit ea60bad31e47c9e234cd1bea778fe9ec54743405
Author: Dustin Sallings 
Date:   Sat May 3 16:23:48 2008 -0700

    Removed some dead code.

commit 955dea2b0365af333e771c2b1b04c109d3c654c5
Author: Dustin Sallings 
Date:   Sat May 3 16:17:09 2008 -0700

    Make zero byte packing optional in transcoder utils.
    
    This is primarily because I don't know for sure the Whalin client
    would know what to do if it saw a 0 byte long.

commit 175759ee57d3333ef5885962d57bb89a7800ce4f
Author: Dustin Sallings 
Date:   Sat May 3 16:01:53 2008 -0700

    Some tests on the parent class of the serializing transcoders.
    
    This helps me ensure the contract of certain methods, and (shockingly)
    found some minor bugs in edge cases.

commit ee45606311d9dab4d8ec4398c1ad6d151b3d919b
Author: Dustin Sallings 
Date:   Sat May 3 15:00:37 2008 -0700

    Transcoder refactoring and introduction of a Whalin compatible transcoder.

commit 8497839b89289c10cf64ffd6cd9a151b9c4048e2
Author: Dustin Sallings 
Date:   Sat May 3 00:40:32 2008 -0700

    Move testDelayedFlush up since it works in binary now.

commit d676561d04b9f2cc679abe207f6c769a7eb12ad3
Author: Dustin Sallings 
Date:   Sat May 3 00:37:05 2008 -0700

    Reenable the ascii append/prepend tests.  I fixed the server bug.

commit 4eca1ee2eca25f037262288451d7036dc0090536
Author: Dustin Sallings 
Date:   Fri May 2 23:53:07 2008 -0700

    Methods for seeing what servers are available or unavailable.

commit 5625170b2f735bfd9b54dfeaf3fb356b680e0eff
Author: Dustin Sallings 
Date:   Fri May 2 23:28:50 2008 -0700

    Ensure we're computing hashcodes over the UTF-8 bytes of keys.

commit d2666943a0db88a68045550cebf4fd8a2ac39876
Author: Dustin Sallings 
Date:   Fri May 2 23:21:34 2008 -0700

    Allow the thread to be marked as a daemon tread through ConnectionFactory.

commit 50c5d4432e1d14bf917ad8ff23408bf4be8e3442
Author: Dustin Sallings 
Date:   Fri May 2 23:03:19 2008 -0700

    Implementation of append and prepend.
    
    I've got a test failure in ascii append/prepend and I haven't quite
    figured out why it gives an EXISTS error, so this may be broken there.
    Works fine in binary including with CAS operations.

commit a7782e997b080632309a77f0b7ed076515f50771
Author: Dustin Sallings 
Date:   Fri May 2 23:08:36 2008 -0700

    Constants should be final.

commit 2d7f14ff11ff8175222dd1ba2472d129a0dc734e
Author: Dustin Sallings 
Date:   Fri May 2 20:29:40 2008 -0700

    Tests classes must end in Test in order to get picked up.
    
    I knew pushing at that point was a dumb idea.

commit 57379c949b482f547bb0ace8629f1c4ee03706fa
Author: Dustin Sallings 
Date:   Fri May 2 20:21:41 2008 -0700

    Tests for timeout operations.

commit 4bcd22ca6d63ae5507f3bb8f006a21f52e0d76d3
Author: Dustin Sallings 
Date:   Fri May 2 19:54:20 2008 -0700

    Moved operation timeout into the connection factory.
    
    It shouldn't change at runtime in a client, as the current model was
    not thread safe.  In order for this to be dynamically reconfigurable,
    the field either needs to be volatile or access to the value must be
    synchronized.
    
    By having the value be declared final and removing the mutators and
    accessors, we can guarantee correctness.

commit 33bcb1c23981deed77a4a2504858254b9f99d5f3
Author: Dustin Sallings 
Date:   Fri May 2 19:41:08 2008 -0700

    Speed up the graceful shutdown test slightly.
    
    This one has been spuriously failing me for a while.  I'd like it to
    consistently run, but I'll settle for 3x more likely for now.

commit 8f6b1711b016452a219d644d515dc0243a12b73e
Author: Dustin Sallings 
Date:   Fri May 2 18:55:31 2008 -0700

    Give longer timeouts to LongClientTest as it often times out in cobertura.

commit 80c91c3b0968ac84a47bdd941c90d4021962aaf2
Author: Dustin Sallings 
Date:   Fri May 2 19:11:25 2008 -0700

    Shorten some lines and stuff.

commit d506ffb1c2f9c092eb34e9e81d0e094de32b19e4
Author: Ray Krueger 
Date:   Fri May 2 07:03:08 2008 -0500

    Added throws declarations for OperationTimeoutException where needed

commit fa5c587aa96bb1829e47be397468fd4912189c5e
Author: Ray Krueger 
Date:   Thu May 1 21:47:49 2008 -0500

    Added a few more throws statements

commit c9cdd9df72cbdb29c580c37695c414741bdc549e
Author: Ray Krueger 
Date:   Thu May 1 21:39:15 2008 -0500

    Added Javadocs and changed mutate timeout to throw an OperationTimeoutException

commit 57864d8a9044b6478c1b0ec1d545bb3c4fc3f699
Author: Ray Krueger 
Date:   Thu May 1 13:27:22 2008 -0500

    Adding getters and setters again!

commit ec93207dcb1f4cae4f58408590f2db93a7516aa9
Author: Ray Krueger 
Date:   Thu May 1 10:41:54 2008 -0500

    Added global operation timeouts to all CountdownLatch.await and Future.get operations

commit 6d3af180ecec85c267e60770616ca3d382d84a33
Author: Dustin Sallings 
Date:   Wed Apr 30 01:12:23 2008 -0700

    Updated to 2.0.2 for new binary protocol changes.

commit df68e4ea4524a890ed65f64dd3bc4a7d14ad64bf
Author: Dustin Sallings 
Date:   Mon Mar 31 23:23:44 2008 -0700

    Updated version to 2.0.1 (better late than never).

commit 5acd91c004fa8f0b12e35f14dc6e72e945435dca
Author: Dustin Sallings 
Date:   Fri Apr 25 11:42:54 2008 -0700

    Format updates from the latest hackathon.

commit 6fed0463f117f507dc1e1370b8471f039d50e2f1
Author: Dustin Sallings 
Date:   Sun Mar 30 16:53:52 2008 -0700

    Ignore junit temp files.

commit ab779ce181d1aa4630d3b225768bcbe23779a617
Author: Dustin Sallings 
Date:   Sun Mar 30 15:45:25 2008 -0700

    Updating the response magic byte to match the spec.
    
    The server will match the spec in this regard real soon now.

commit f3b0127b9b4430033444a0793818b0f02d3c5580
Author: Dustin Sallings 
Date:   Tue Mar 25 09:33:30 2008 -0700

    Updated the comment since incr/decr is properly defined.

commit c0b909b75a1690aab9f63a9b381b21a1c932f124
Author: Dustin Sallings 
Date:   Tue Mar 25 09:29:27 2008 -0700

    Added a couple of tests to increase invalid key coverage

commit 6ad37945a4d8c6e6fb1d783b3e4fa1bc5469b189
Author: Dustin Sallings 
Date:   Tue Mar 25 09:15:55 2008 -0700

    Added assertions and exceptions around client creation.
    
    Also added a bunch of tests to ensure these are doing the right thing.

commit c4a1e1a76445d5563dea25417529f7d88c483c2e
Author: Dustin Sallings 
Date:   Tue Mar 18 21:45:29 2008 -0700

    Binary protocol alignment changes.

commit 66404fe4b5645ec779ff5094da0c54c77c447574
Author: Dustin Sallings 
Date:   Wed Mar 12 09:00:23 2008 -0700

    Make use of the supplied expiration date in CASMutator.

commit 8d4dd42a36a750490d6ec49289e6f360ea3a475e
Author: Dustin Sallings 
Date:   Thu Mar 13 23:42:11 2008 -0700

    Added a manual test to try to reproduce a problem.

commit f1fd25e05a128be4e15aa4c5c3388350058f4c32
Author: Dustin Sallings 
Date:   Sun Mar 9 00:04:12 2008 -0800

    Added package.html for transcoders.

commit 7bdbb14cd932a5d0f35916cccc7162c4c9168ffb
Author: Dustin Sallings 
Date:   Sun Mar 9 00:01:28 2008 -0800

    Get the transcoders using the same flags.

commit 2b8ac04fd95d881bad94bfee7e46faa554cdc9b1
Author: Dustin Sallings 
Date:   Sat Mar 8 23:25:03 2008 -0800

    Set version to 2.0

commit f757bdc574938efb492189612fec4d9c25f2d4cb
Author: Blair Zajac 
Date:   Wed Mar 5 13:55:24 2008 -0800

    Remove the transcoder parameter from the Javadoc for two methods.
    
    These methods do not take a transcoder argument.

commit e236160e4e9082171a7807bdf16693c36c90e2b6
Merge: eea9142 bbf0dd4
Author: Dustin Sallings 
Date:   Wed Mar 5 09:28:01 2008 -0800

    Merge branch 'master' into new_intf

commit bbf0dd4df3ba43820c0b4034b05615bfbfb1116e
Author: Dustin Sallings 
Date:   Wed Mar 5 09:27:51 2008 -0800

    Build a docs and source package when packaging.

commit eea91426311c1b57603213d79c82ee66c14bec6a
Merge: d9c628a 56f1d99
Author: Dustin Sallings 
Date:   Tue Mar 4 23:41:06 2008 -0800

    Merge branch 'master' into new_intf

commit 56f1d998a296e82610e6561843a363a17db11b4e
Author: Dustin Sallings 
Date:   Tue Mar 4 23:39:50 2008 -0800

    Don't allow CAS to run forever.
    
    The user may supply a maximum number of attempts.  Currently, it
    doesn't know *why* a failure occurs, but it at least doesn't hang
    forever.
    
    Conflicts:
    
    	src/main/java/net/spy/memcached/CASMutator.java
    	src/main/java/net/spy/memcached/MemcachedClient.java
    	src/main/java/net/spy/memcached/SerializingTranscoder.java
    	src/main/java/net/spy/memcached/transcoders/LongTranscoder.java
    	src/test/java/net/spy/memcached/CASMutatorTest.java

commit d9c628ad57769c8c2fbcb0ecc04b909247fd4e8d
Author: Dustin Sallings 
Date:   Tue Mar 4 23:28:04 2008 -0800

    Increased test coverage.

commit 3a8db35391413268cee06e1b15faac577a40897c
Author: Dustin Sallings 
Date:   Tue Mar 4 22:17:56 2008 -0800

    Added tests for new transcoders.

commit 4e36dce179bde3e1e656925a4523ece3277cf66e
Author: Dustin Sallings 
Date:   Tue Mar 4 21:33:08 2008 -0800

    Don't allow CAS to run forever.
    
    The user may supply a maximum number of attempts.  Currently, it
    doesn't know *why* a failure occurs, but it at least doesn't hang
    forever.

commit c46835224198b3eda37a5433ad7658459c880a2c
Author: Dustin Sallings 
Date:   Tue Mar 4 21:00:42 2008 -0800

    Documentation for new client methods.

commit 3922c4e595704b4b0e2317d40132ebbc969c6a65
Author: Dustin Sallings 
Date:   Tue Mar 4 20:48:41 2008 -0800

    Some minor cleanup to get eclipse happy.

commit 66bca07ecb4cc368cf817bd7734c4e63cd8a553b
Author: Blair Zajac 
Date:   Tue Mar 4 17:11:32 2008 -0800

    New Transcoder for java.lang.Integer's.

commit 3636c12337efa2041c2489121d3f03ab2c262671
Author: Blair Zajac 
Date:   Tue Mar 4 17:08:35 2008 -0800

    Change four spaces to a single tab to be consitent with all the other
    code.

commit 689c871da188c7de07e986e8bd1065e8543cb27c
Merge: 2f6a4f5 ee6f4b3
Author: Blair Zajac 
Date:   Tue Mar 4 17:05:36 2008 -0800

    Merge branch 'master' of http://www.orcaware.com/git/java-memcached-client/

commit ee6f4b3408817df5846de58a6b028818c2c06a35
Author: Blair Zajac 
Date:   Tue Mar 4 17:03:35 2008 -0800

    Make CASValue parameterized in T.  Do this by requiring a Transcoder
    argument for CASMutator's contrustor.  This removes the need for casts
    In CASMutator.  Use the new LongTranscoder in the test suite.

commit e090536b5aa772cff337c9b72948c2f8ec53f582
Author: Blair Zajac 
Date:   Tue Mar 4 16:58:44 2008 -0800

    Add a LongTranscoder that transcodes Longs.

commit bc278d0c1b45c846104ff88fe9d8439f04d82c79
Author: Blair Zajac 
Date:   Tue Mar 4 16:28:06 2008 -0800

    Remove the encode*() and decode*() methods from SerializingTranscoder and
    use the same methods from TranscoderUtils.

commit 9520f6f1c1f2e279d33dc823643ba6b1e855c44c
Author: Blair Zajac 
Date:   Tue Mar 4 15:57:06 2008 -0800

    Update a javadoc for the MemcachedClient's transcoder argument.

commit 2f6a4f5d813fdbba7c8ca34cdd5cfbd539bf7b4e
Author: Blair Zajac 
Date:   Tue Mar 4 15:50:13 2008 -0800

    Add a new transcoder for Long's.

commit 7d2794340de7b1b16c69cc13b1c0399131334c30
Author: Blair Zajac 
Date:   Tue Mar 4 15:40:36 2008 -0800

    Add two utility methods to take any integer or long and hash it into a
    value safe for use as a memcached flags value.

commit 7dd7ce0e3a875fe276ffab810a2fa4ce10c86dad
Author: Blair Zajac 
Date:   Tue Mar 4 15:26:10 2008 -0800

    Remove unused imports in TranscoderUtils.java.

commit 6ee12818a1c9e4097cae3d59862bd97ad419e53e
Author: Blair Zajac 
Date:   Tue Mar 4 15:20:14 2008 -0800

    Move the encode*() and decode*() methods in SerializingTranscoder.java
    into a new class and make them static.  This will allow other transcoders
    to use them.

commit f7cece39de56994bd4d980fd9a2ac2ac421bf517
Author: Blair Zajac 
Date:   Tue Mar 4 14:52:25 2008 -0800

    Move Transcoder and SerializingTranscoder into a new
    net.spy.memcached.transcoders package.  This gives space to write
    transcoders for many native types, which will allow for compile-time
    checks.

commit e2f04bac82f86417e5f4390a75a097c97b86aa4a
Author: Blair Zajac 
Date:   Tue Mar 4 14:07:28 2008 -0800

    Add parameterized versions of all the MemcachedClient methods.
    
    The new methods all take a Transcoder and if they returned an
    Object, now return a T instead.
    
    The non-paramterized methods use the SerializingTranscoder which
    has T as an Object and calls the parameterized ones, so callers
    should not see a change in behavior.

commit 204eed2c92dedc6047e21676e8c3c601b6ff4c3d
Author: Blair Zajac 
Date:   Tue Mar 4 11:35:37 2008 -0800

    * src/main/java/net/spy/memcached/MemcachedClient.java
      (setTranscoder):
        Rename the to argument to tc to be consistent with the variable names
        in src/test/java/net/spy/memcached/SerializingTranscoderTest.java.
    Rename the

commit bd59dde37ba5c1261cee0c6fd538abba475d0cd2
Author: Blair Zajac 
Date:   Tue Mar 4 11:27:42 2008 -0800

    Change the Transcoder interface to be parameterized by the type of objects
    it serializes.  This will allow for custom Transcoders to be used in
    methods and stronger compile-time warnings.
    
    The default SerializingTranscoder implements Transcoder.

commit 66eef222ddd481187a6dae96e00369860ac3f005
Author: Dustin Sallings 
Date:   Mon Mar 3 19:41:43 2008 -0800

    Guard against duplicate shutdown attempts.
    
    Only actually perform the last one.
    
    http://code.google.com/p/spymemcached/issues/detail?id=8

commit 5fb9f4aefa09a3c3a52aa25a8b63a8d7fc374ddc
Author: Dustin Sallings 
Date:   Sat Mar 1 22:25:11 2008 -0800

    Updated the docs to point to the google code page.

commit 934efb9e0cfe766bb01e50a9d18cc453849ff86c
Author: Dustin Sallings 
Date:   Sat Mar 1 21:59:50 2008 -0800

    Removed TODO, moved to an issue tracker.

commit baf89a9fb0f9e90b011d5505a7407332634998a7
Author: Dustin Sallings 
Date:   Fri Feb 29 21:45:28 2008 -0800

    Updating version in buildfile

commit 5838411c0091a2cfc923c24bddecbe25711d32ab
Author: Dustin Sallings 
Date:   Fri Feb 29 21:19:25 2008 -0800

    Removed a done TODO item.

commit cded86c0bde4d3e042bfa71c81b8230a4ec46163
Author: Dustin Sallings 
Date:   Fri Feb 29 18:45:50 2008 -0800

    Now that protocol discovery is committed, use the same port for
    testing both protocols.

commit 1ee97bc65c54ff964b1a7474f79f865524a44d4f
Author: Dustin Sallings 
Date:   Fri Feb 29 17:50:39 2008 -0800

    Slightly cleaner shutdown sequence.
    
    This avoids a couple of the exceptions that were occuring on shutdown
    due to lack of coordination (just allowing the NIO exceptions to tear
    stuff down), and downgrades others to debug as we can expect things to
    error occasionally when the plug is pulled.

commit 7615734608fb6d07a01982a793c1a624a9f7be23
Merge: 40e3cfb 3dd8fce
Author: Dustin Sallings 
Date:   Fri Feb 29 16:46:42 2008 -0800

    Merge commit 'origin/cas'

commit 40e3cfb635a04ea4d497d12eeec80693dfa57f1c
Author: Dustin Sallings 
Date:   Fri Feb 29 16:44:35 2008 -0800

    Updated TODO re: interface

commit 94452fad93481f989924f9cacb4b20593963fcd5
Author: Dustin Sallings 
Date:   Fri Feb 29 16:40:46 2008 -0800

    Updated TODO re: shutdown

commit 19a283341f2bfff33962f8c0781744aaf5d99183
Author: Dustin Sallings 
Date:   Fri Feb 29 14:15:18 2008 -0800

    Updated repository location.

commit 3dd8fce0724be1feec817d98d9d8dd50c5c82f88
Merge: e2b222d 3ba4006
Author: Dustin Sallings 
Date:   Fri Feb 29 13:56:57 2008 -0800

    Merge branch 'master' into cas

commit 3ba40062796e83074b4f7951a24e48782b9edaeb
Author: Dustin Sallings 
Date:   Fri Feb 29 13:56:00 2008 -0800

    Added a .gitignore

commit 081f0ac037bc3b97efbf2e04cd2451b4ea00f690
Author: Dustin Sallings 
Date:   Fri Feb 29 13:55:44 2008 -0800

    Updated build tools for git.

commit 1c8e7f5a675d4aaca328bcb79866969191a3ab60
Author: Dustin Sallings 
Date:   Fri Feb 29 13:26:17 2008 -0800

    Removed .hg files.

commit e2b222d1ac8e8967e457db6b422efd9830c34dcc
Author: Dustin Sallings 
Date:   Mon Feb 25 23:24:05 2008 -0800

    Reduced visibility of some internal classes.

commit a2d7ace24909c4afa8b151af48a6c45174e071fc
Merge: c869dfe f9e3701
Author: Dustin Sallings 
Date:   Mon Feb 25 23:18:42 2008 -0800

    merged doc updates from default.

commit c869dfed0de5d1cd0d1b0a38bfa11d50457d9485
Author: Dustin Sallings 
Date:   Mon Feb 25 23:16:23 2008 -0800

    Updated some docs and object visibility.

commit f9e37011be486509fa45a0d2f2f68acbaef050bd
Merge: 0f3d833 3158eac
Author: Dustin Sallings 
Date:   Mon Feb 25 23:08:21 2008 -0800

    merged from default.

commit 0f3d8334119d6b0d49c250fa2b1e3cc18898c12a
Author: Dustin Sallings 
Date:   Mon Feb 25 23:08:07 2008 -0800

    Adding package.html to some missing packages.

commit 3158eaca6b26066aaa61584cb25ac05ad99b0982
Merge: faf8dd4 e4fcf07
Author: Dustin Sallings 
Date:   Mon Feb 25 23:00:43 2008 -0800

    Merged ipv6 work from default.

commit faf8dd4743a02145d97e6de653596647e4236fc6
Author: Dustin Sallings 
Date:   Mon Feb 25 22:59:11 2008 -0800

    Run the client tests against ipv6 as well as ipv4

commit 98c0e69ff828ad6044c841c8111aea1274175d29
Author: Dustin Sallings 
Date:   Mon Feb 25 22:57:52 2008 -0800

    Change addr util to deal with IPv6 parsing.

commit e4fcf070a894f7c4b31c7be0516b0115b3a127a4
Author: Dustin Sallings 
Date:   Fri Feb 22 18:39:39 2008 -0800

    Document cas tools better.

commit 0fdddaef278db17609ed1ef5b749ca8901912599
Author: Dustin Sallings 
Date:   Fri Feb 22 18:17:47 2008 -0800

    Higher level abstraction for CAS.

commit 68812befc90361fb2a1961c3dd390d47a5f46cf4
Author: Dustin Sallings 
Date:   Fri Feb 22 12:25:36 2008 -0800

    Test cancellation on CAS ops and fix the bugs they revealed.

commit 3b41c02cd6f74013603106d2298e195ca53f8b47
Author: Dustin Sallings 
Date:   Fri Feb 22 12:13:23 2008 -0800

    Use an enum instead of a boolean to indicate what happened during a CAS.
    
    There are two normal failure states which must be distinguished.  An enum
    will indicate success vs. one of the failure states.

commit a52d77dcce1231c1390e9078dc2aceded28ae6fd
Author: Dustin Sallings 
Date:   Fri Feb 22 11:40:09 2008 -0800

    Use a constant for the command implementing base get in the text protocol.
    
    This change is slight, but it seems a little better to use the constant to set
    a final than to use an abstract method to get the constant.

commit 988bbb90051718087a48e73e094f3bcb1db521ad
Author: Dustin Sallings 
Date:   Thu Feb 21 23:00:16 2008 -0800

    API support for CAS operation.

commit 7ae4ccf8dbacb03e8fa34224f85d0db869da9a6b
Author: Dustin Sallings 
Date:   Thu Feb 21 23:00:14 2008 -0800

    Base support for the CAS operation.

commit 464750ef38787e89497544a7080fcb09a8bbcfa7
Author: Dustin Sallings 
Date:   Thu Feb 21 23:00:12 2008 -0800

    High level support for CAS gets.

commit 64611658df522e4748d089c293615960820d57d7
Author: Dustin Sallings 
Date:   Thu Feb 21 23:00:10 2008 -0800

    Lower-level support for CAS gets operations.

commit 3c1898b91b05c64b2b812c0d927eb1e3c8e5026f
Author: Dustin Sallings 
Date:   Wed Feb 20 11:32:59 2008 -0800

    Updated to site 1.2.3

commit 16a89a22438a09c1663118ff0af9e61e543285d8
Author: Dustin Sallings 
Date:   Mon Feb 11 21:53:27 2008 -0800

    Added tag 2.0-pre8 for changeset ea67f6f44fb1

commit 5d5f25b14a76e1c4b27e71e1dd81d38ee67a593a
Author: Dustin Sallings 
Date:   Mon Feb 11 21:53:22 2008 -0800

    Updated the build number to 2.0-pre8

commit 55f6911e82789e6cbad1ceccc66b1a10e609ffb5
Author: Dustin Sallings 
Date:   Mon Feb 11 21:45:39 2008 -0800

    	Fixed a bug related to detecting timeouts of CountDownLatches.
    
    	Prior to 65ea6e61fdc2 (when I replaced my own mechanism with
    CountDownLatch), exceptions were thrown by the latch mechanism.
    
    	CountDownLatch requires you to check a return value to determine whether
    there was a timeout or the count went all the way down.
    
    	Tests were added to ensure the correctness of this behavior on all async
    calls.

commit 8fc6b1e5a127cd519d12229a216ea4d27edd1924
Author: Dustin Sallings 
Date:   Tue Jan 22 20:36:35 2008 -0800

    Removed some redundant string -> byte[] extractions.

commit 26fa76e245351201345a412a4c70c287c02544f8
Author: Dustin Sallings 
Date:   Tue Jan 22 20:32:26 2008 -0800

    More UTF-8 tests and fixes.

commit e06f632e48f0a0f6a29a050dc10c3ea82e98905d
Author: Dustin Sallings 
Date:   Tue Jan 22 20:07:53 2008 -0800

    Killed off MemcachedClient.setHashAlgorithm and getHashAlgorithm.
    
    These methods were unused and led to confusion when people tried to use them.

commit 3f3bae556f2924fe8eb35111c09d2af70315e410
Author: Dustin Sallings 
Date:   Tue Jan 22 19:17:22 2008 -0800

    Another UTF-8 test and a fix for a bug it exposed.

commit 15284a64f3e9731cdcb36962aa594ad81265ac41
Author: Dustin Sallings 
Date:   Fri Jan 18 23:52:38 2008 -0800

    Updated TODO.

commit 83ef0df9caea4b8343d5bf6ede773d6789298e0e
Author: Dustin Sallings 
Date:   Thu Jan 17 22:59:56 2008 -0800

    Binary protocol provides a binary response now.

commit 3da5ec40a719be9a079387a0ddec0f5dc2fb38a3
Author: Dustin Sallings 
Date:   Wed Jan 2 13:46:07 2008 -0800

    Updated TODO for recent bug report.

commit 4a4f2c9fe140debb1e4bcf98db76c6cbc82666a4
Author: Dustin Sallings 
Date:   Fri Dec 28 09:47:39 2007 -0800

    	Added a CRC32 test case that was reportedly returning incorrect results.
    
    	Works for me.

commit 816d8b9c74e73b4e77f16a849e22f74391944787
Author: Dustin Sallings 
Date:   Sun Dec 23 14:59:26 2007 -0800

    Added tag 2.0-pre7 for changeset f8c5231ef7da

commit 0342c0c537549b305ec8f5fd84a5b015ad12373e
Author: Dustin Sallings 
Date:   Sun Dec 23 14:59:01 2007 -0800

    Key validation based on byte values instead of character values.

commit 25af7fb8f756b38784e2c29b4231d203003464c0
Author: Dustin Sallings 
Date:   Sun Dec 23 14:53:51 2007 -0800

    Handle multibyte keys by encoding them into UTF-8.

commit e64fbadda6f4f1a9813491b6a3e2decf1aded318
Author: Dustin Sallings 
Date:   Sun Dec 23 13:44:49 2007 -0800

    	Use consistent character sets when transcoding string values.
    
    	Defaults to UTF-8, but may be supplied at runtime.
    
    	I'd like more testing around different character sets, but I'm going to
    have to get someone familiar with another character set to make me a test case.

commit 017194a28df11db62513850b3ac31cb8acc30fc3
Author: Dustin Sallings 
Date:   Wed Dec 19 00:28:06 2007 -0800

    Brought back the stupidly large test.

commit cdc536eae144d1f2ad8fa45b608c5c25397ce084
Author: Dustin Sallings 
Date:   Tue Dec 18 23:20:06 2007 -0800

    Updates for the December revision of the memcached binary protocol.

commit bbae61fd61adda05c297a1cf6d40f837298a7736
Author: Dustin Sallings 
Date:   Wed Dec 12 23:39:24 2007 -0800

    Added tag 2.0-pre6 for changeset d67629c8691b

commit 4fe0b4776dfc754b27c78c854b3e39013560ee52
Author: Dustin Sallings 
Date:   Wed Dec 12 23:39:10 2007 -0800

    Updated buildfile for 2.0-pre6

commit 9362c7aefb81cd2623b8d365821862266013a8a1
Author: Dustin Sallings 
Date:   Wed Dec 12 23:38:51 2007 -0800

    	Separate double-check and excessive empty counts and increase the latter.

commit 1d8449e1e60e62fa65e57865904809a79da00ede
Author: Dustin Sallings 
Date:   Wed Dec 12 22:06:40 2007 -0800

    Fix some problems with duplicate processing around reconnects and item adds.

commit 7975a6a945dae34be1121b6700a30c17704fc3f4
Author: Dustin Sallings 
Date:   Wed Dec 12 22:10:59 2007 -0800

    Handle CancelledKeyException bug on Linux.
    
    Bug related to nio on java:
            Thread dump below looking at it, it might be a manifestation of what's
            described in
            http://forum.java.sun.com/thread.jspa?forumID=535&threadID=5135128 which
            looks like it is
            http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=2147719 which is
            claimed to be fixed in the NEXT release of java.

commit b3e7ecf79dce90589dafbc0a13b600831da4476e
Author: Dustin Sallings 
Date:   Tue Dec 11 22:43:33 2007 -0800

    Removed a piece of unused code.

commit 2960169b06e34c03678b656c8929107d3ab2e1d7
Merge: 835526a 62b3e91
Author: Dustin Sallings 
Date:   Mon Dec 10 20:23:43 2007 -0800

    Merged buildr branch

commit 835526a0d2841e8e8e219828a39d8a235d9d7183
Author: Dustin Sallings 
Date:   Mon Dec 10 20:01:53 2007 -0800

    Avoid unnecessary wakeups on bulk get.

commit cb895ad76c297ffe0ec0fe99f4b6385a90f34a40
Author: Dustin Sallings 
Date:   Mon Dec 10 19:49:30 2007 -0800

    Updated to build_info 1.0.1

commit cf91211797acc38d24e040fd4b3a8242b8b2c29f
Author: Dustin Sallings 
Date:   Mon Dec 10 19:45:29 2007 -0800

    Updated eclipse stuff

commit 881969cbced2f9415ce9db85db5ae2aca6702116
Author: Dustin Sallings 
Date:   Mon Dec 10 15:05:07 2007 -0800

    	Debug log exception.
    
    	Thanks to Steve Grimm for this fix.

commit 091219105f658fea2665099bef2ab09526ba9d7b
Author: Dustin Sallings 
Date:   Sat Dec 8 21:10:13 2007 -0800

    updated to site plugin 1.2.2

commit 31f2a33ebba539c856b370b1255641ba95d463c2
Author: Dustin Sallings 
Date:   Sat Dec 8 21:08:17 2007 -0800

    Fixed doc xhtml compliance

commit 7a80e28aa66c8e91ced044b14b8279278edd54ef
Author: Dustin Sallings 
Date:   Fri Dec 7 22:39:14 2007 -0800

    Update docs to referene spy.jar 2.4

commit c1384307451ed644ac13648514d50582e11489b6
Author: Dustin Sallings 
Date:   Fri Dec 7 22:38:58 2007 -0800

    Get spy.jar from a m1 repo

commit 566b51a8f4bc2e3a976ec8fc96e1d4970056e348
Author: Dustin Sallings 
Date:   Fri Dec 7 10:03:42 2007 -0800

    Converted build to buildr

commit 62b3e91d43d842d3fdab3233d1d7f2f45211c7f2
Merge: 2049529 65c5334
Author: Dustin Sallings 
Date:   Fri Dec 7 09:44:58 2007 -0800

    Merged in the binary-protocol branch

commit 204952904fa2669476b92d225207940d23ebc5d4
Author: Dustin Sallings 
Date:   Thu Nov 15 10:53:28 2007 -0800

    Doc update:  cancel takes an arg

commit 765abbd0e8954e804ad982a230e4fec29d2a3f44
Author: Dustin Sallings 
Date:   Fri Nov 9 15:10:05 2007 -0800

    Added status indicators to TODO

commit 850e971495bb516ed8edc0f7698ce92332d9394c
Author: Dustin Sallings 
Date:   Wed Nov 7 22:50:09 2007 -0800

    Added notes about nio

commit 716ff3f9441e70380d3d99106a1c6e0449c2b0ec
Author: Dustin Sallings 
Date:   Sun Nov 4 16:57:21 2007 -0800

    Added tag 2.0-pre5 for changeset da198056602f

commit bcb238a48b5491966ecd789281c85afc7abc324e
Author: Dustin Sallings 
Date:   Sun Nov 4 16:45:16 2007 -0800

    Increasing cache time so the tests pass when my machine is loaded.

commit fab38eee2c14aefcd97873061c6d8ec43a4ddf03
Author: Dustin Sallings 
Date:   Sun Nov 4 16:22:31 2007 -0800

    Updating for a 2.0-pre5 release

commit f0ca4a005705e902a13ee88fa47ed61522a228f6
Author: Dustin Sallings 
Date:   Fri Nov 2 11:19:48 2007 -0700

    Fix case where the transcoder couldn't decode content from the cache.

commit 8649d0c9d9c00c44c5be1ed6e77a6ec5a1e02e0a
Author: Dustin Sallings 
Date:   Mon Oct 15 10:40:20 2007 -0700

    Validate key form on bulk gets.

commit 74fb2c53a3c1279b67456f479ccb1c68c87a7d13
Author: Dustin Sallings 
Date:   Tue Oct 9 15:26:26 2007 -0700

    removed some commented out debug print stuff

commit 887b05aa8b77f8f40120a75b8334d2ac656601e0
Author: Dustin Sallings 
Date:   Tue Oct 9 15:25:23 2007 -0700

    Fixed some tab/space mixing

commit 74f0fc9619708e2aaed7018a352ef491967d787f
Author: Dustin Sallings 
Date:   Thu Sep 27 15:28:07 2007 -0700

    Another doc fix.

commit d8024729d126b5e6f6755d802df0bf6f37d14b03
Author: Dustin Sallings 
Date:   Thu Sep 27 15:15:36 2007 -0700

    Some documentation updates.

commit 9083dd98f933583a83be9c41aa964d77b6eba668
Author: Dustin Sallings 
Date:   Thu Sep 27 14:32:26 2007 -0700

    Added tag 2.0-pre4 for changeset e8f8f6271791

commit d2fcdaefac6f26cd903124494e54cf491f86c79e
Author: Dustin Sallings 
Date:   Thu Sep 27 14:21:47 2007 -0700

    Updated to 2.0-pre4

commit 9f1781bef37f97839026a15f6add303d2831fe61
Author: Dustin Sallings 
Date:   Thu Sep 27 14:20:47 2007 -0700

    Added optimization documentation.

commit 1d25c2a0bc7d0869e5c3959227fa18aae3effd27
Author: Dustin Sallings 
Date:   Tue Sep 4 18:02:37 2007 -0700

    Separated request and response magic

commit 37c5339871fab729ee314240d37b6e68e5874f97
Author: Dustin Sallings 
Date:   Tue Sep 4 00:19:47 2007 -0700

    Added tag 2.0-pre3 for changeset f8d5ab6277c7

commit 48ab667f547ac30f0a37162a536a29a1143bce76
Author: Dustin Sallings 
Date:   Tue Sep 4 00:19:39 2007 -0700

    Updated to 2.0-pre3

commit d5312c7cf2bdc87eaf0512e0bdad997aca4c185c
Merge: bf249fb 6a92429
Author: Dustin Sallings 
Date:   Tue Sep 4 00:18:01 2007 -0700

    Merged in 2.0-pre2 release

commit 6a92429f291c1341b2d010741d49613da5f03517
Merge: 9afc1e8 bdcdd7a
Author: Dustin Sallings 
Date:   Tue Sep 4 00:09:52 2007 -0700

    Merged cleanup fix

commit 9afc1e8fe6d72d9742b7985aa99496ee4113f792
Author: Dustin Sallings 
Date:   Mon Sep 3 23:52:16 2007 -0700

    Added delayed delete to binary protocol.

commit bf249fbe5d24664270ec6e52f00a4a0bffd5d530
Author: Dustin Sallings 
Date:   Fri Aug 31 11:13:09 2007 -0700

    Added tag 2.0-pre2 for changeset 477c11e448ec

commit 76ef19929f1587fe26fc10f708d4d832fd573610
Author: Dustin Sallings 
Date:   Fri Aug 31 11:13:02 2007 -0700

    Setting up version numbers for 2.0-pre2

commit bdcdd7adb7adc4f36db50f7cc9f238e9bfe19416
Author: Dustin Sallings 
Date:   Fri Aug 31 10:08:09 2007 -0700

    Remove cobertura.ser when cleaning.

commit bdf2936f85cf9d55b94efc31a033390a30e9956e
Author: Dustin Sallings 
Date:   Fri Aug 31 01:02:17 2007 -0700

    make sure I'm truncating longs with long masks.

commit 8df727305c570a95b16042f55056a30bd2fb2f9f
Author: Dustin Sallings 
Date:   Fri Aug 31 00:59:20 2007 -0700

    Added some more fnv variations and hash and locator interop tests and fixes.

commit 07370da2754670f7e094904972398702b8d90151
Author: Dustin Sallings 
Date:   Thu Aug 30 22:36:51 2007 -0700

    Updated ketama tests with values taken from libketama

commit bc37082f8742f0d463af2207ce65f35e8a98e4dc
Author: Dustin Sallings 
Date:   Thu Aug 30 00:30:11 2007 -0700

    More tests (and fixes for bugs they revealed)

commit 4694b2189866c562208a8b88933c366366e177a1
Author: Dustin Sallings 
Date:   Wed Aug 29 22:39:56 2007 -0700

    Unified protocol tests

commit 663b1a15aa4716126deb2313d9ac3fa055cdaaf7
Author: Dustin Sallings 
Date:   Wed Aug 29 22:18:06 2007 -0700

    Added tests for cancellation behavior (and fixed a bug therein).

commit b901c317fd45347b487ce10423797a6ab0a2eeed
Author: Dustin Sallings 
Date:   Tue Aug 28 22:30:18 2007 -0700

    Prioritize delivery of errors over that of cancellations.

commit 13da44b6e4a0ec35032e17d5c1f6b9b0f5f3db36
Author: Dustin Sallings 
Date:   Tue Aug 28 21:35:08 2007 -0700

    Reuse ProxyCallback code for ascii and binary

commit 6555455004b1b236159b41d7c5c24c9ae6c3cb1c
Author: Dustin Sallings 
Date:   Tue Aug 28 21:21:02 2007 -0700

    Added sequential get optimization to the binary protocol

commit 5974782d8322539fb2d7a9ab521249124c1fb272
Author: Dustin Sallings 
Date:   Tue Aug 28 00:19:37 2007 -0700

    Added some coverage and removed some dead code.

commit 1fc060f8031a4007c325963ced99cdd88e438722
Author: Dustin Sallings 
Date:   Tue Aug 28 00:11:13 2007 -0700

    Killed off getKeys()

commit a18899ff3c0af6dfbe2762ecef37607497c0252d
Author: Dustin Sallings 
Date:   Mon Aug 27 23:57:14 2007 -0700

    Enabled some more tests.

commit 3ef3b03f3029346ef56f6046de02e2b38ac9c198
Author: Dustin Sallings 
Date:   Mon Aug 27 23:24:34 2007 -0700

    Added tag 2.0-pre1 for changeset 951f24cdb58b

commit 40e1b322f20d767e8b6a5d400b0cb881d4b04e81
Author: Dustin Sallings 
Date:   Mon Aug 27 23:24:18 2007 -0700

    	Version and doc updates to roll out a 2.0 pre-release.

commit 06478e04235ebd92c14dd1397a824e6ae54b899b
Author: Dustin Sallings 
Date:   Mon Aug 27 23:05:43 2007 -0700

    	Added BinaryConnectionFactory to make it easier to connect via the binary
    protocol.

commit 367cfaabd49f4834a4117d73cdb26537057c8dfd
Author: Dustin Sallings 
Date:   Tue Aug 21 22:18:07 2007 -0700

    Binary incr/decr returns a string now.

commit dbf28c49bf80d9090c427c950f598c0d65a3a4e2
Author: Dustin Sallings 
Date:   Tue Aug 21 22:09:51 2007 -0700

    	Updated commands and new binary incr/decr longness.

commit 4ede045774579012c2b44a86ddb12f20fea5410e
Merge: febfb14 ea6ac63
Author: Dustin Sallings 
Date:   Wed Aug 15 10:00:26 2007 -0700

    Merged incr/decr recommendation

commit febfb146205fd4266722cf9eb913b21dcacdfa49
Merge: 65c5334 ccef21d
Author: Dustin Sallings 
Date:   Wed Aug 15 09:58:09 2007 -0700

    Merged doc changes from default

commit 65c5334b1f8b8f3ecc1940cde9191297060d8c97
Author: Dustin Sallings 
Date:   Wed Aug 15 09:57:14 2007 -0700

    Updated doc links.

commit ea6ac63135c25d769dee755d4a32ebbc24b1c2cd
Author: Dustin Sallings 
Date:   Wed Jul 25 21:37:07 2007 -0700

    	Implementation of my incr/decr recommendation with backwards compatibility.

commit ccef21d2c6a559219d6de8a674f4018b9a547eaf
Author: Dustin Sallings 
Date:   Tue Jul 24 10:13:50 2007 -0700

    Updated the OperationExceptionTest for unstripped errors

commit 11d778a49582a42ef6894bae60c8e9626cf023a2
Author: Dustin Sallings 
Date:   Tue Jul 24 10:11:29 2007 -0700

    Moved binary port for tests

commit 30b172f8abc3619b86e969d425e2e9bbd934cf72
Author: Dustin Sallings 
Date:   Mon Jul 23 23:34:40 2007 -0700

    Implemented version and opened more tests

commit fffaef40f8ce3f54db5db61f735aa1a834d5312c
Author: Dustin Sallings 
Date:   Mon Jul 23 23:24:02 2007 -0700

    Implemented delete and multiget

commit 0a31f3a05f8e1883c8b67189afee6ad03743f7c1
Author: Dustin Sallings 
Date:   Mon Jul 23 22:04:37 2007 -0700

    Processing sets and gets.

commit 249877d4225bab45c82a29a71e585d07434afd3e
Author: Dustin Sallings 
Date:   Mon Jul 23 18:14:32 2007 -0700

    Further work on binary client.

commit a73de702e5e1d08a229f809fd1b7ec1fe23d4deb
Author: Dustin Sallings 
Date:   Mon Jul 23 11:11:34 2007 -0700

    Field shadowing fix.

commit d40dfef6d684eb5cc6fb2b32b3f63f15b4c61b4b
Author: Dustin Sallings 
Date:   Mon Jul 23 00:22:15 2007 -0700

    	Started binary protocol implementation.
    
    	...then decided to go to bed before finishing it.

commit 96c7ec28ce41cee1b62d6177f7e939366a2cd25b
Author: Dustin Sallings 
Date:   Mon Jul 23 00:20:50 2007 -0700

    Pulled reusable code out of the ascii operation impl

commit aa38d92695049e7c5e74e7c3a2ebb81f4f7910e4
Author: Dustin Sallings 
Date:   Sun Jul 22 23:04:34 2007 -0700

    Abstracted away status reporting.

commit 44d5d300985e2ae0a0568849f59bb6d1b033d542
Merge: 889cd74 150fa18
Author: Dustin Sallings 
Date:   Fri Jul 20 17:09:25 2007 -0700

    Merged in 96ac3e8a252f from tip

commit 889cd74f1fa6ee6b534a090f73e4f219a8730357
Author: Dustin Sallings 
Date:   Fri Jul 20 17:08:18 2007 -0700

    Remove redundant latch countdown when waiting for queues

commit 150fa182fad016c5a886adacaf0a3673eda31993
Author: Dustin Sallings 
Date:   Fri Jul 20 17:04:32 2007 -0700

    Note some abstraction leaks in MemcachedClient

commit fba36ce918e50af611e7fe3acea3c93f39e6fb44
Author: Dustin Sallings 
Date:   Fri Jul 20 16:56:57 2007 -0700

    moved OperationReadType to protocol/ascii since it's ascii-specific

commit e96c58b6905bcae75854e42e77660d8fe04c47fe
Author: Dustin Sallings 
Date:   Fri Jul 20 01:10:26 2007 -0700

    Removed unused constructor

commit c43dfc2bd5de7a8e676c4626da9551838e5cb8db
Author: Dustin Sallings 
Date:   Fri Jul 20 01:04:29 2007 -0700

    Removed some redundant wasCancelled implementations

commit afe4813fa74dbdb3866698bf8530fc8de3d8ac38
Author: Dustin Sallings 
Date:   Fri Jul 20 00:54:42 2007 -0700

    Moved nested ops enums to toplevel

commit 6ec6e83ef11da47b1aefa5e314fa55f19d960735
Author: Dustin Sallings 
Date:   Fri Jul 20 00:41:06 2007 -0700

    make everything that's not variable final

commit 153acfae1acc6d2cfc0e34695aeb8b605e2f5d75
Author: Dustin Sallings 
Date:   Fri Jul 20 00:27:04 2007 -0700

    basic code cleanup

commit 7a33d00ecaf22727745bb529609a45c916a874cf
Author: Dustin Sallings 
Date:   Fri Jul 20 00:24:51 2007 -0700

    factored out reusable tcp connection handling

commit cde7e8ff175af1bc951b097b4ac54cfbd2c0348e
Author: Dustin Sallings 
Date:   Fri Jul 20 00:07:26 2007 -0700

    package.html updates

commit 5b43bc9ef219fd82c0ded42e8954b1d1bedf16c0
Author: Dustin Sallings 
Date:   Thu Jul 19 23:59:24 2007 -0700

    moved OperationException into ops

commit e824e3a51f41ac7976ceb9f89f5c9a5067b5db4b
Author: Dustin Sallings 
Date:   Thu Jul 19 23:57:17 2007 -0700

    introduced a factory to abstract away operations

commit f354ae22b82019f31437cd2d683778be3cb6ab77
Author: Dustin Sallings 
Date:   Thu Jul 19 23:30:54 2007 -0700

    Renamed OperationFactory -> BroadcastOpFactory

commit c90d141e747a9aa1926032a55fe0ae1ca09771a5
Author: Dustin Sallings 
Date:   Thu Jul 19 23:23:49 2007 -0700

    pushed the node impl into an ascii protocol-specific handler

commit 202cff1895796fee3dedc40a316e2ef2fa4d5276
Author: Dustin Sallings 
Date:   Thu Jul 19 23:07:46 2007 -0700

    Extracted interfaces for operations.

commit 32348cbf6f3afd91e249c80988ce5c2e0ee1484e
Author: Dustin Sallings 
Date:   Thu Jul 19 22:36:10 2007 -0700

    Renamed the classes to impls

commit 0bcbc2825f784b79286cf34204ef68eb7f9d2365
Author: Dustin Sallings 
Date:   Thu Jul 19 21:55:22 2007 -0700

    	Repackaged operation stuff into protocol.

commit 12c28547c9d162d695ac344a2aad96748dedff12
Author: Dustin Sallings 
Date:   Sun Jul 8 23:20:55 2007 -0700

    	Test ketama continuum wrapping.

commit ce0c4bc42be0c6966b614f5902ace84d06448574
Author: Dustin Sallings 
Date:   Sun Jul 8 23:00:41 2007 -0700

    	Cleaned up some tests around the NodeLocators.
    
    	Less code, more coverage.

commit b264c301f7ebbdb3dad971f04e7e8fb9520df717
Author: Dustin Sallings 
Date:   Sun Jul 8 22:20:10 2007 -0700

    Added tag 1.4 for changeset d9ec9454132e

commit 78614162473d243d299c3abbc5a3d38aa17da750
Author: Dustin Sallings 
Date:   Sun Jul 8 22:20:07 2007 -0700

    	Updated project for version 1.4.

commit 58c5a0eea5e9ec9f9363d52db884954af2ba6969
Merge: 66a618a c15a326
Author: Dustin Sallings 
Date:   Sun Jul 8 22:16:05 2007 -0700

    	Merging 1.4 to default.

commit 66a618a1c73d6cbc5c6934d048784d53e642fefb
Merge: f7832c7 961632b
Author: Dustin Sallings 
Date:   Sun Jul 8 21:59:50 2007 -0700

    merged 1.3 into default

commit f7832c74ac1781b2bd29f48bc1f8fafa1b76dba5
Merge: 89825d2 4acee06
Author: Dustin Sallings 
Date:   Sun Jul 8 21:59:32 2007 -0700

    merged pipeline into default

commit 89825d20fa1fa09b2abfda00432a8f60c0451f20
Merge: 4b7913c df8956e
Author: Dustin Sallings 
Date:   Sun Jul 8 21:59:18 2007 -0700

    merged 1.2 into default

commit 4b7913c283a5163be4704045eac8ae88ffbeb68a
Merge: 928c2af 159dada
Author: Dustin Sallings 
Date:   Sun Jul 8 21:58:56 2007 -0700

    	Merged 1.1 into default.

commit 928c2afeb54d0e1492989489b5c40bea54514fff
Merge: f604487 5ed0c2e
Author: Dustin Sallings 
Date:   Sun Jul 8 21:58:34 2007 -0700

    	Merged 1.0 into default.

commit c15a32649a9a270925dacaf6d0862e523ed5b2f7
Author: Dustin Sallings 
Date:   Sun Jul 8 15:14:16 2007 -0700

    	Reformatting in HashAlgorithm.

commit b8089f592283b6aa030a3ce395e56c60ee1e1eab
Author: Dustin Sallings 
Date:   Sun Jul 8 14:55:10 2007 -0700

    	Added basic ketama consistent hashing support.

commit 010e54678ff27ac3b7433b853a7a0a7562d06b10
Author: Dustin Sallings 
Date:   Sun Jul 8 01:53:47 2007 -0700

    	Make it possible for NodeLocator implementations to be swapped out at
    runtime.

commit 44b1ffbc706f3e27f61a371ee4ebbf93e65f0673
Author: Dustin Sallings 
Date:   Sun Jul 8 01:38:27 2007 -0700

    	Changed ArrayModNodeLocator to take a List.

commit f455c34f9629a7aa5ed7e1193f58651ca1214a9d
Author: Dustin Sallings 
Date:   Sun Jul 8 01:26:58 2007 -0700

    	Handle failing servers with per-key sequences in bulk gets.

commit 699541688be39f607ee278ac1d9b6158b8c4e88f
Author: Dustin Sallings 
Date:   Sun Jul 8 01:23:06 2007 -0700

    	Fixed a bug in iterating nodes over an array.

commit 86f4cd0a30c8045bcb8284b6dd9e66888ef512e5
Author: Dustin Sallings 
Date:   Sat Jul 7 18:05:17 2007 -0700

    	Semi-functional client based on NodeLocator.
    
    	The way to handle bulk gets in the event of a failing node is unclear, so
    the failing node test currently fails.

commit ee6cbda66eb847cc3671db2dee64a6bf401abf23
Author: Dustin Sallings 
Date:   Sat Jul 7 16:36:36 2007 -0700

    	Added test for ArrayModNodeLocator.

commit 621a0364d35359c5aaf8d5adc6034d8c9075c515
Author: Dustin Sallings 
Date:   Sat Jul 7 16:05:08 2007 -0700

    	Get everything using the interface in the right place.

commit 02eefef199128d18747542b5444054ce14b66ccc
Author: Dustin Sallings 
Date:   Sat Jul 7 15:59:56 2007 -0700

    	Made MemcachedNode an interface MemcachedNodeImpl implements.

commit 9dc05de5741afd2fc58bc23da33238de8a2764ed
Author: Dustin Sallings 
Date:   Sat Jul 7 15:44:11 2007 -0700

    	Renamed MemcachedNode to MemcachedNodeImpl

commit dde525285cb366bcf39c2ef6831bef6d05c0354b
Author: Dustin Sallings 
Date:   Sat Jul 7 15:42:18 2007 -0700

    	Finished making all of the MemcachedNode fields private.

commit c7871ed57be9f33a015de415c7a035be519dfaab
Author: Dustin Sallings 
Date:   Thu Jul 5 16:44:35 2007 -0700

    	Working on separating node location from the core.

commit 62c923f8c68e02bfc985e6fe7cc0f3273f5f01bb
Author: Dustin Sallings 
Date:   Thu Jul 5 16:42:37 2007 -0700

    	Trying to determine the interface of MemcachedNode.

commit 8e4eb93812b89936a2d1d8b9363c476405704139
Author: Dustin Sallings 
Date:   Thu Jul 5 11:02:34 2007 -0700

    	Pulled QueueAttachment out into MemcachedNode.
    
    	QueueAttachment was a nested class in MemcachedConnection that was used to
    hold per-connection information.  It was called QueueAttachment because it was
    attached to the select queue or something like that.  MemcachedNode seems like
    a better name, and it's going to need to be exposed some as we get into more
    pluggable node selection algorithms.

commit 002d210933e356f1b45681377c8e00fac06ac74a
Author: Dustin Sallings 
Date:   Tue Jul 3 22:47:01 2007 -0700

    	Added some comments around my server-down logic.

commit 65a82279abc08e94218e37b0001643f73780099d
Author: Dustin Sallings 
Date:   Fri Jun 29 13:45:00 2007 -0700

    	Fix a warning in a test.
    
    	I just upgraded to eclipse 3.3 and it's finding warnings and errors that
    should've been found before, but weren't.

commit eb13bf3423798788cb720f6a0ae770802f745724
Author: Dustin Sallings 
Date:   Fri Jun 29 01:24:06 2007 -0700

    	Some changes to get this bench thing to run under the profiler.
    
    	There were a couple of stupidities in how the client was set up, and some
    issues keeping large numbers of async sets down.  It still doesn't model a real
    application very well, but may be good enough at showing what would happen in a
    peak situation.

commit 63215d8b3a2bd4083c8c22a2a1c6da82c74e0bb8
Author: Dustin Sallings 
Date:   Fri Jun 29 00:08:59 2007 -0700

    	Support for working around a failing server.
    
    	Apparently, the common thing to do is check the status of a server when
    performing a command against it, and trying the next server in the list when
    the server is unavailable.
    
    	My previous behavior was to queue a command against a server regardless of
    its status such that when a server was available the command would be processed
    as close to immediately as contention would allow, but when a server was
    unavailable, the command would wait around for the server to come back up.
    
    	The new behavior is something near the middle of this.  When a server is
    unavailable, I'll try the next server in the list.  I repeat until I've
    exhausted every known server and then just queue it for the one to which it
    belonged in the first place.

commit 6e71ed2d357b637e4f346663d386278e713bb7bd
Author: Dustin Sallings 
Date:   Tue May 22 01:12:14 2007 -0700

    	Reuse \r\n bytes for terminating stuff in operations.

commit 5e2cae2e42b4777b1168e4e6ecf1ed838c561baf
Author: Dustin Sallings 
Date:   Fri May 18 00:22:30 2007 -0700

    	Added an adaptation of the spcached benchmark tool.
    
    	http://code.google.com/p/spcached/wiki/benchmarktool

commit 20f340dd7d2461f3f0c1911fdfe3e413e42edfa6
Author: Dustin Sallings 
Date:   Wed May 16 18:02:48 2007 -0700

    	Some documentation updates.

commit 2e0dc79ec214b6b16e31010341a1f8a97f368461
Author: Dustin Sallings 
Date:   Wed May 16 01:14:42 2007 -0700

    	Converted some fields to final.

commit a36477c9ea22f93f38efa1042de18b02b90398d8
Author: Dustin Sallings 
Date:   Thu May 3 20:03:25 2007 -0700

    Added tag 1.3.1 for changeset a5b3a230226d

commit 02dfea4eb7bcef946b44602a79707615bee8dc90
Author: Dustin Sallings 
Date:   Thu May 3 20:03:13 2007 -0700

    	Updated version to 1.3.1.

commit c0c08b8a92b728b94555533ced1273e011aa7fab
Author: Dustin Sallings 
Date:   Thu May 3 00:05:38 2007 -0700

    	Turn some assertions into harsh logging.
    
    	I had some conditions where these assertions were firing due to
    cancellation when a server went bad.

commit a570bdfc0be904b500ad481e9ae9a41777a768fa
Author: Dustin Sallings 
Date:   Mon Apr 23 23:32:39 2007 -0700

    	Increased test coverage slightly.

commit 4a03fb94812331d042de6c9e3edba3e77a704f26
Author: Dustin Sallings 
Date:   Mon Apr 23 23:03:36 2007 -0700

    	Exclude BuildInfo from cobertura report (autogenerated).

commit ddcda27e0c1f9fe483b70f1164d78af65ba66eae
Author: Dustin Sallings 
Date:   Mon Apr 23 22:46:51 2007 -0700

    Added tag 1.3 for changeset 7e2827b77f29

commit 961632bde4b71e71288a1fae1f9570b1ac10e97a
Author: Dustin Sallings 
Date:   Mon Apr 23 22:46:08 2007 -0700

    	Updating version to 1.3.

commit c3600313d18110ee41b86e4dcd1d04a480a68d3a
Author: Dustin Sallings 
Date:   Mon Apr 23 00:12:14 2007 -0700

    	Better key validation.

commit 441855b23dbce4ad07e8fd74ea0f267797fa123d
Author: Dustin Sallings 
Date:   Sun Apr 22 13:13:45 2007 -0700

    	Do a bulk get after the lots of sets test.

commit b2b7fe2863dbd54b37ec8b6d09fca26791a472fe
Author: Dustin Sallings 
Date:   Sun Apr 22 00:00:34 2007 -0700

    	Switch to a do/while loop to avoid doing the exact same check twice in a
    row.

commit ad8e34c60493c244c22e52121730783590bb09ed
Author: Dustin Sallings 
Date:   Sat Apr 21 23:32:28 2007 -0700

    	Fixing BufferUnderflowException by assuming the CR and LF are available at
    the end of a chunk of data from a get.
    
    	Included a new test broken out into a different client test as it takes a
    while to run.
    
    	Thanks to [email protected] for pointing out this problem.

commit 42a9d89f21e6661e127e034d2094b2075afd502b
Author: Dustin Sallings 
Date:   Thu Apr 19 22:54:30 2007 -0700

    	More consistent shutdowns and error handling.

commit 4acee0638643ba0880bde11cb061a32734f25b4f
Author: Dustin Sallings 
Date:   Wed Apr 18 23:34:38 2007 -0700

    	Use a bigger buffer size for the ``lots of sets'' test.

commit 7dfd70975fd1a33f5322c4e07d443c2b9ec6e488
Author: Dustin Sallings 
Date:   Wed Apr 18 22:58:02 2007 -0700

    	Got a working write buffer.

commit 6c25e30df6c97098689e3716c0440ab50c6c7652
Author: Dustin Sallings 
Date:   Wed Apr 18 01:24:23 2007 -0700

    	Trying to arrange buffers for writes before sending them.
    
    	This is broken right now since copying one buffer into another without
    checking the size causes a BufferOverflowException.  After covering that, I've
    got some measurements to perform.
    
    	This may conflict with get optimization.

commit 818f4f42258cf164ef8047e41b674c7c56743b73
Author: Dustin Sallings 
Date:   Tue Apr 17 00:36:58 2007 -0700

    	Profiling showed an array that was getting converted to a string
    unnecessarily as part of preparing a debug log message.

commit e7ed0b51babecb21f5056c15ce00ac495b517717
Author: Dustin Sallings 
Date:   Sun Apr 15 23:49:22 2007 -0700

    	Fixed a problem when queueing a reconnect without any read ops.

commit 33582d4497f39adbb63fba426a58c97026c1c4c3
Author: Dustin Sallings 
Date:   Sun Apr 15 23:45:00 2007 -0700

    	Added another unit test to validate sequencing on multiple operations.

commit f7ddc07e310ea0b8ccf14adbf08c5b95103d5db5
Author: Dustin Sallings 
Date:   Sun Apr 15 23:30:25 2007 -0700

    	Added read optimization back.

commit 1125c01ecd7fc3927b45b309f7e10a4c5939dc2b
Author: Dustin Sallings 
Date:   Sun Apr 15 23:30:04 2007 -0700

    	Increased the default queue size.
    
    	My unit tests are too fast now and I have to do a lot more work to notice
    it.

commit e8adc28c072a33f3fc1a4a60e61b72a2ac77d761
Author: Dustin Sallings 
Date:   Sun Apr 15 23:07:34 2007 -0700

    	Pipelineing all reads and writes.

commit 3ca037225e59d8c3a60a1c089345fb87a4d1dd6f
Author: Dustin Sallings 
Date:   Sun Apr 15 17:17:49 2007 -0700

    	Wrap a GetOperation callback to allow an operation whose keys have all been
    returned within an optimized get to return before the overall get operation
    completes.

commit cd232329f7bbd5d6740198506e3c2d7019dc4f81
Author: Dustin Sallings 
Date:   Sat Apr 14 18:48:32 2007 -0700

    	Ensure the keys fed into a get won't be modified after they're added.

commit 3761de6b433d5462c737e8f1c7088ac5f54a58b1
Author: Dustin Sallings 
Date:   Sat Apr 14 18:48:07 2007 -0700

    	Fixed a bug where a CR as the last character in a buffer would cause a
    buffer underrun due to an immediate attempt to read for an LF.

commit 1f98b50c3cff69c1239fc6a67370004a50b20dbc
Author: Dustin Sallings 
Date:   Fri Apr 13 23:19:33 2007 -0700

    Added tag 1.2 for changeset 7f5ab9429851

commit df8956e7fb322d6a02524b962eb999be6f919daa
Author: Dustin Sallings 
Date:   Fri Apr 13 23:19:17 2007 -0700

    	Setting version to 1.2.

commit a73d0377eb7f3b94b4feaa05528e32e8b224ba4e
Author: Dustin Sallings 
Date:   Fri Apr 13 23:06:13 2007 -0700

    	Optimization to collapse multiple sequential gets into a single multi-key
    get.

commit e26fe3f2474964b1c8be4292ce029e88cfd68a10
Author: Dustin Sallings 
Date:   Fri Apr 13 20:55:31 2007 -0700

    	Added some comments so I could remember why addedQueue exists.

commit d87e603dcf92e45cafec98229ab21728f15e678d
Author: Dustin Sallings 
Date:   Fri Apr 13 18:03:22 2007 -0700

    	New TODO

commit 75d8f32d3070eb13749bbae44a1e6800e1003bbf
Author: Dustin Sallings 
Date:   Thu Apr 12 12:48:23 2007 -0700

    	A benchmark that came up on the list.

commit 27d010971a732f31952d9c5d22eba0ac2d2be8fd
Author: Dustin Sallings 
Date:   Wed Apr 11 00:42:02 2007 -0700

    	Remembering where I got FNV hash.

commit 6701b0bad6e17a7006245cc4267656763e28c115
Author: Dustin Sallings 
Date:   Tue Apr 10 20:19:26 2007 -0700

    	Formatting fixes.

commit 85060e7fa93821d0274afc8672d0dbca429ba7c6
Author: Dustin Sallings 
Date:   Tue Apr 10 20:17:28 2007 -0700

    	Added Fowler/Noll/Vo hash implementation.

commit afce5042e90e53f36b7d97ffc34859235ae1060f
Author: Dustin Sallings 
Date:   Tue Apr 10 15:23:58 2007 -0700

    	Added a couple todo items from the list today.

commit ad6bdcc05230653ed4b06808cdf8343dcc7665e3
Author: Dustin Sallings 
Date:   Sun Apr 8 15:13:18 2007 -0700

    	Added unit tests for non-serializable objects through the client.
    
    	The behavior was already tested in the transcoder test, but I wanted to
    make sure it got picked up at the right time in all of the mutation methods.

commit 971c7b53a2ebb90ba9f8b10af89547ce47870f84
Author: Dustin Sallings 
Date:   Sat Apr 7 15:28:11 2007 -0700

    	Ensure exceptions in the queue wait don't prevent a proper shutdown.

commit edb48a9a57af0eb82216439493dd3ccbe6520c40
Author: Dustin Sallings 
Date:   Sat Apr 7 13:44:47 2007 -0700

    	Added the expiration definition to the javadoc for add, set, and replace.

commit f8fce0fa6398fd8f2515d357850ace4030a63a29
Author: Dustin Sallings 
Date:   Sat Apr 7 13:31:07 2007 -0700

    	Check the shutting down state before asserting the thread is running.

commit 708e7b0c1fbb7e33954ca589e8f761f648d50c9a
Author: Dustin Sallings 
Date:   Sat Apr 7 12:51:17 2007 -0700

    	Added graceful shutdown, and cleaned up the shutdown procedure a bit.
    
    	It's still possible to get an occasional exception logged while shutting
    down depending on what exactly was going on during the shutdown.

commit ccc214599ccb0b40f83804f75194b249f64478ee
Author: Dustin Sallings 
Date:   Sat Apr 7 02:11:27 2007 -0700

    	Got rid of arch tags.

commit 44c2f1692f859fe960a87f736a19fdf5c2d92e22
Author: Dustin Sallings 
Date:   Sat Apr 7 00:44:48 2007 -0700

    Added tag 1.1 for changeset f06a486b7153

commit 159dadaafeded9fbc85b0ccf9444fdf096982c60
Author: Dustin Sallings 
Date:   Sat Apr 7 00:44:46 2007 -0700

    	Set the version to 1.1.

commit f6044878d68f2891d2e1a78602f083422d0989d0
Author: Dustin Sallings 
Date:   Sat Apr 7 00:37:22 2007 -0700

    	Store operations return Future instead of Future

commit 0ec063179cb12296b9e13bc3d8d4a041d58beefd
Author: Dustin Sallings 
Date:   Sat Apr 7 00:32:39 2007 -0700

    	Cleaned up the documentation.

commit 903977d2e75f8f5afd9637ececeb564600addac2
Author: Dustin Sallings 
Date:   Fri Apr 6 23:29:10 2007 -0700

    	This constant is no longer referenced from here.

commit 1cc7f5e761c9797b873e1553c737185bbd37a8f4
Author: Dustin Sallings 
Date:   Fri Apr 6 21:19:43 2007 -0700

    	Replaced last remaining SynchronizationObject with an AtomicLong +
    CountDownLatch.

commit 95eab2639e4a2a2e3e3aad86310912d2f0bacb65
Author: Dustin Sallings 
Date:   Fri Apr 6 21:05:22 2007 -0700

    	Introduced a factory for configuration connections to memcached servers.

commit c2cbb9d071d170a2d41eb922a866d0a43e8dc054
Author: Dustin Sallings 
Date:   Thu Apr 5 01:13:59 2007 -0700

    	Returning futures from delete and flush.
    
    	A client may now synchronize on deletes and flushes (e.g. the client test).

commit 9927c6d361e51419f50d56ad277f66294983ef4a
Author: Dustin Sallings 
Date:   Thu Apr 5 00:34:21 2007 -0700

    	Put 1.0.44 in the version list.

commit 7f6fcf8eb5be2f4bd58e179a7f204aac3ffcb02c
Author: Dustin Sallings 
Date:   Thu Apr 5 00:33:41 2007 -0700

    Added tag 1.0.44 for changeset 8f2b2b3293d5

commit 40bb183a5489bb584add3ec777e9e65fc0e057a9
Author: Dustin Sallings 
Date:   Thu Apr 5 00:31:15 2007 -0700

    	use isEmpty() vs. size() to check for the first queued item

commit 100daab6ca70ae8c19fec0fba02f26e291ccfd65
Author: Dustin Sallings 
Date:   Thu Apr 5 00:29:03 2007 -0700

    	s/StringBuffer/StringBuilder/

commit 5cd8e1f9681922bd8c1e0a9bcad0a520936dc69d
Author: Dustin Sallings 
Date:   Thu Apr 5 00:27:49 2007 -0700

    	Bad side-effect in an assertion bug fix.

commit 0e9a7370dbf74d17009d6d51794985429703fc77
Author: Dustin Sallings 
Date:   Wed Apr 4 20:28:58 2007 -0700

    	Got rid of some more CountDownLatch reinventions.

commit 6da85082ae8efa05ccb384f3c193869c0a162f98
Author: Dustin Sallings 
Date:   Wed Apr 4 20:03:31 2007 -0700

    	Got rid of my reimplementation of CountDownLatch I was using for versions
    and stats.

commit 6464fb4d8fc9e0891e50bdef315701e295d4c48c
Author: Dustin Sallings 
Date:   Mon Apr 2 23:01:33 2007 -0700

    	Added a method to find all keys in a memcached cluster.

commit 75809b1708a8014ade2e66fa1782556abc367f1f
Author: Dustin Sallings 
Date:   Mon Apr 2 21:08:39 2007 -0700

    	Modeled the wire handling stuff a little better in BaseOpTest.  This is all
    pretty boring since I simplified the reader code.

commit 798aa8e0906ada9e2ce64baeeda579e017178c57
Author: Dustin Sallings 
Date:   Mon Apr 2 19:16:49 2007 -0700

    	Added the 1.0.43 release to the list.

commit 3a079980e5a74a13605a4c19a645127b3023c80f
Author: Dustin Sallings 
Date:   Mon Apr 2 19:14:33 2007 -0700

    Added tag 1.0.43 for changeset d1594a53e846

commit 14d5543ec697d6e208dd4eed9429532a4d3d50b1
Author: Dustin Sallings 
Date:   Mon Apr 2 13:40:43 2007 -0700

    	flush_all with a delay sets a delay for a flush_all and doesn't work like
    delete at all.  Updated my test to reflect my newfound understanding.

commit f1bdfa1e52349c3496e128beaa8992ea1282b2aa
Author: Dustin Sallings 
Date:   Mon Apr 2 12:53:20 2007 -0700

    	Unit tests centered around an actual memcached plus a couple bug fixes this
    found.
    
    	I really don't like having unit tests rely on network resources, but a
    dedicated memcached on localhost is obviously better than not having one at all
    (based on my unit tests).  I still don't have a way to model the various
    failure modes I have code to support, though.

commit e39216c59dadde2ca04d94daa3d387ce3cede5c4
Author: Dustin Sallings 
Date:   Mon Apr 2 00:24:37 2007 -0700

    	Make sure the selector assertion gets a consistent view of the current op.

commit 6363ea59d62af1357dc361b9cbe24a009df02f4c
Author: Dustin Sallings 
Date:   Mon Apr 2 00:16:58 2007 -0700

    	When we receive data when we're not expecting to do so, log what we
    receive.
    
    	This revealed a strange condition where a server gave us an error while we
    were transmitting data.  I don't know exactly what caused this error
    (SERVER_ERROR object too large for cache).  I'm feeding it what I think is my
    largest object, but it doesn't break.  Will have to experiment more.

commit 9c653aa9ab0780e0d1a8afef2de4d863d72b450a
Author: Dustin Sallings 
Date:   Sun Apr 1 22:35:27 2007 -0700

    	Reinitialize the connection when there's an unexpected read.

commit f23c88277779a6f71f25401cd65797055418ebfc
Author: Dustin Sallings 
Date:   Sun Apr 1 16:30:30 2007 -0700

    	Set up the downloads maven plugin.

commit 29b5fb3466128b3d357e2bd04be13a58d0d28a73
Author: Dustin Sallings 
Date:   Sun Apr 1 16:17:15 2007 -0700

    	Updated the documentation to point out where to find the rest of the stuff.

commit bd622642d139110f816ee6ceb4706f20e18edca9
Author: Dustin Sallings 
Date:   Sun Apr 1 16:16:54 2007 -0700

    	Added some more ignore for build side-effects.

commit 8d2d8070195c5fe7f0ffa35f2ebfc76b2b8022ae
Author: Dustin Sallings 
Date:   Sun Apr 1 15:50:26 2007 -0700

    Added tag 1.0.42 for changeset 75abde568e4d

commit f79760fea83540f64838c02571ac3424ae04f4a0
Author: Dustin Sallings 
Date:   Sun Apr 1 15:49:42 2007 -0700

    	Throw away the old channel when disconnecting.

commit 3cc9d7c12dc25cbe218c2306a30cdc69722b2e29
Author: Dustin Sallings 
Date:   Sat Mar 31 19:08:12 2007 -0700

    Added tag 1.0.41 for changeset 39207d2e8f7e

commit 17ad39e01f901441a495a5ac08b9cc7dfbbb9b96
Author: Dustin Sallings 
Date:   Sat Mar 31 18:57:53 2007 -0700

    	Added some exception handlers to requeue bad connections.

commit 6683bf2ee081519cf319e9149007a5158b95545f
Author: Dustin Sallings 
Date:   Sat Mar 31 18:47:52 2007 -0700

    	Reconnect if an IOException occurs during handleOperation()

commit e1837b53d7c26034aa9ae1904184694ff2b67f2c
Author: Dustin Sallings 
Date:   Sat Mar 31 14:53:21 2007 -0700

    Added tag 1.0.40 for changeset 8472728b1ba5

commit beb896c7f0df67ae0b91c4ab41780afe1be1594b
Author: Dustin Sallings 
Date:   Sat Mar 31 14:44:29 2007 -0700

    	Added a utility to parse common host list strings.

commit 519d20c55dd41c1aafaba5a357a7571d4263b8e3
Author: Dustin Sallings 
Date:   Sat Mar 31 14:29:36 2007 -0700

    	Added some collections constructors and a configurable read buffer size.

commit abae22cc668dd2584eacc16415b919c882e09019
Author: Dustin Sallings 
Date:   Sat Mar 31 14:12:50 2007 -0700

    Added tag 1.0.39 for changeset e3f652b9f6b7

commit e906d235883dbc2552ac768ef62f4cf0df2d7b6d
Author: Dustin Sallings 
Date:   Sat Mar 31 14:12:36 2007 -0700

    	Support more than one hashing algorithm.
    
    	Tested the crc32 hash algorithm against values returned from the perl
    client's implementation.

commit 9731db18af37b8ffec65b4bebc7fd8cc3e2e3ec4
Author: Dustin Sallings 
Date:   Sat Mar 31 13:02:40 2007 -0700

    	Avoid returning negative server IDs.  That won't work.

commit 7923eab3002eac8f79cdb8bb255c8ee1dec6cf65
Author: Dustin Sallings 
Date:   Fri Mar 30 15:24:51 2007 -0700

    	I was compressing data, testing the size, and compressing it again if it
    were small enough.  Modified to only compress once.

commit eb13c7488f600a5dd4a49d9f85e6a4f073e752cd
Author: Dustin Sallings 
Date:   Fri Mar 30 13:05:26 2007 -0700

    	Fixed some compiler warnings (errors in my current eclipse config).

commit 32111df801f8825bb798127154b24658a5453411
Author: Dustin Sallings 
Date:   Fri Mar 30 13:00:34 2007 -0700

    	Rebuilt the eclipse files.

commit 9f6768664486aa16288cf3b9374656382dc3ca9a
Author: Dustin Sallings 
Date:   Fri Mar 30 12:59:14 2007 -0700

    	Added a remote repo to the project.properties.

commit a86262725ca68e5a6b3161e1e3817972b591b0f6
Author: Dustin Sallings 
Date:   Thu Mar 29 23:26:49 2007 -0700

    Added tag 1.0.38 for changeset bfb57465c688

commit 14d10d0b3935cb775bec7bdb46d09eb030806bf0
Author: Dustin Sallings 
Date:   Thu Mar 29 23:26:41 2007 -0700

    	Some more fixups after deploying on FreeBSD in the photo album.

commit 6f0b3c17a4a4090050f8f8a2d4cef1fc04265370
Author: Dustin Sallings 
Date:   Thu Mar 29 22:07:35 2007 -0700

    Added tag 1.0.37 for changeset 303860232701

commit 55d6f13c230c7aa7dc5bf0423a8941b76ddd5eb6
Author: Dustin Sallings 
Date:   Mon Mar 26 23:14:32 2007 -0700

    	Fixed up some compiler warnings.

commit 234b9becf0c35a4b947c909c20d75bc2e36a0e81
Author: Dustin Sallings 
Date:   Mon Mar 26 22:47:09 2007 -0700

    Added tag 1.0.34 for changeset 486e3edcb99a

commit 744ece02379df43455b31fff315052203d7324df
Author: Dustin Sallings 
Date:   Mon Mar 26 22:46:58 2007 -0700

    Added tag 1.0.36 for changeset f79b13acc9bb

commit 5ed0c2ec369f7e0458f5409e900e1c0b8987f4a8
Author: Dustin Sallings 
Date:   Mon Mar 26 22:26:39 2007 -0700

    	Build updates.

commit 4de1fd1a781455dfc07425b090f075829a5f029f
Author: Dustin Sallings 
Date:   Mon Mar 26 22:22:47 2007 -0700

    	Got rid of arch stuff.

commit 363a95acf17c2452986581f76fb44af953e12a28
Author: Dustin Sallings 
Date:   Thu Aug 10 00:55:56 2006 -0700

    Use a queue of new entries to write without checking write state.*
    This isn't quite right.  There's a race condition between checking the write
    queue and going into the select where an item can be added but won't be
    checked.

commit 6d2b5abb516261d0f222c66beb58b3755428e1cd
Author: Dustin Sallings 
Date:   Wed Aug 9 19:20:42 2006 -0700

    Revert the previous dumb hack.  Going to write a new dumb hack.

commit 5a262a78557009f38915416dd7ddcfb98bc42f49
Author: Dustin Sallings 
Date:   Wed Aug 9 01:27:52 2006 -0700

    Attempt to write whenever there's an op in write state if select returns empty

commit 9d3859ac64d378cff9386968e25358f5f4046585
Author: Dustin Sallings 
Date:   Mon Jul 31 14:18:44 2006 -0700

    Added a protected empty constructor to MemcachedClient to allow mocks.

commit fb1d5cdc6098184a6e8d0a8b72c5f1bdbfbb4c56
Author: Dustin Sallings 
Date:   Fri Jul 28 14:39:22 2006 -0700

    Ensure compression never increases the size of the data.

commit a1b317e05a3f6f8e03d30b4900feabb4746091b6
Author: Dustin Sallings 
Date:   Thu Jul 27 09:53:30 2006 -0700

    Added index.xml

commit bc975bb08cdbc4ae4595e2f4eade5d665094c85a
Author: Dustin Sallings 
Date:   Thu Jul 27 09:19:09 2006 -0700

    renamed LICENSE -> LICENSE.txt to make maven happy

commit 89fdc199d7169dca08932c2ce1ce270c76dd0873
Author: Dustin Sallings 
Date:   Thu Jul 27 00:48:47 2006 -0700

    Include the source with each build.

commit daca72f52eeef3191d19b6f31cf58925577becf5
Author: Dustin Sallings 
Date:   Thu Jul 27 00:37:45 2006 -0700

    Added a TODO and LICENSE.

commit fa80e53254290a47a6fae77afea5d6083f5ee4fa
Author: Dustin Sallings 
Date:   Thu Jul 27 00:22:51 2006 -0700

    get bulk (sync) with both a collection and varargs

commit b8013a45a0ee3d8d272c5089317756d831fe51e0
Author: Dustin Sallings 
Date:   Wed Jul 26 17:46:48 2006 -0700

    Make sure the operations are all informed that they're cancelled.

commit 5fceb2918af375f65169d50dd9ed68bc02bedd56
Author: Dustin Sallings 
Date:   Wed Jul 26 17:30:33 2006 -0700

    Deal with the spinning selects a little better.

commit d8f71c6efbd8b3e604b2b6ec0682cf44aaa9407f
Author: Dustin Sallings 
Date:   Wed Jul 26 16:49:41 2006 -0700

    Fork for junit tests.  makes -ea work.

commit 3a434155df257b803e4c254d0680124dc09b4b29
Author: Dustin Sallings 
Date:   Wed Jul 26 16:45:39 2006 -0700

    Throw IllegalArgumentExceptions on invalid keys or values.

commit fe81635b4f67004ae78e36e6dab1b8dda892f11b
Author: Dustin Sallings 
Date:   Wed Jul 26 16:29:58 2006 -0700

    Consolidate the callback interfaces so there's basically just one.

commit 45dcacf4802d77ae0d6321318a36bfdc14ad4500
Author: Dustin Sallings 
Date:   Wed Jul 26 15:55:56 2006 -0700

    javadoc updates

commit d64fc13b8190b7c2d3843a15d86cc7727280191b
Author: Dustin Sallings 
Date:   Wed Jul 26 14:04:33 2006 -0700

    Added package.html for the packages.

commit dc2d3c23eea52513ab6321677ad9c62ee5013e32
Author: Dustin Sallings 
Date:   Wed Jul 26 13:01:43 2006 -0700

    Moved to more futures.  Got javadocs looking somewhat decent.

commit b6bce7fedf2aaad8764962c426b4b4837df2a0da
Author: Dustin Sallings 
Date:   Tue Jul 25 23:54:40 2006 -0700

    Store byte arrays as byte arrays.

commit 37135b79f86656265c8ab132ed2f5c839f2bbc05
Author: Dustin Sallings 
Date:   Tue Jul 25 23:48:25 2006 -0700

    Use Futures for all of the asynchronous sets, and implement cancel.

commit 27d78206e03f57aec340a9295e52139effd26496
Author: Dustin Sallings 
Date:   Tue Jul 25 20:21:37 2006 -0700

    Added some convenient timeout mechanisms on some sync calls.

commit 8ed2dfee8c2ee5dea30ec1b5de1aa9f4ac15f2a4
Author: Dustin Sallings 
Date:   Tue Jul 25 12:50:04 2006 -0700

    More correct async connect.  More assertions.  Always start thread.

commit 108150560c01ce51d5fa5316c5565d240b56bf58
Author: Dustin Sallings 
Date:   Tue Jul 25 11:38:18 2006 -0700

    Setting version to 1.0.

commit fdba62e512556c9c3f87e31709df442c87539b77
Author: Dustin Sallings 
Date:   Tue Jul 25 11:35:52 2006 -0700

    Forgot maven.xml

commit 1ff9978b802de2080fdac5a167f6f563287e2b54
Author: Dustin Sallings 
Date:   Tue Jul 25 11:35:31 2006 -0700

    Added build info.

commit d2fd0d50a74ec7f58f386970e8ceda78e7a55eae
Author: Dustin Sallings 
Date:   Tue Jul 25 11:30:24 2006 -0700

    Trying to get -ea in for the tests, but it's not going.

commit 667ebacd40b171b9fef0ab9a51b98c34e118ef86
Author: Dustin Sallings 
Date:   Tue Jul 25 00:53:33 2006 -0700

    Toss a date in the cache from the test client.

commit fc8296161f3a67e77f0727420273d6689d263997
Author: Dustin Sallings 
Date:   Tue Jul 25 00:40:31 2006 -0700

    Get rid of StringTranscoder.  It's not really all that useful.

commit 2a366f17673bcded40d57985640d989820a7b94b
Author: Dustin Sallings 
Date:   Tue Jul 25 00:37:54 2006 -0700

    Some special type handling in the serializer.

commit 8a0ec677d8ea6c2fad9f07d0b0379a014a16af66
Author: Dustin Sallings 
Date:   Mon Jul 24 22:22:25 2006 -0700

    Retry with delay.  Some minor code cleanup.

commit 8a76889f2801e476bcafabeb48ba629c177c0f62
Author: Dustin Sallings 
Date:   Mon Jul 24 18:03:48 2006 -0700

    More work on memcached restarts.

commit 03f353e39d23c71825405acd22db94428323997b
Author: Dustin Sallings 
Date:   Mon Jul 24 15:03:08 2006 -0700

    Deal with memcached restarting.

commit c6550fbfa3915fd4cef04241f0940905c96dea0c
Author: Dustin Sallings 
Date:   Mon Jul 24 11:12:41 2006 -0700

    Most logging to debug.  Use localhost for testing.

commit 1d2ee277847e42c6913587b601b3dafed6467785
Author: Dustin Sallings 
Date:   Mon Jul 24 01:13:44 2006 -0700

    for incr/decr defaults, use a string rep since that's what memcached wants

commit 566e3ff54b9438518de9e19f1beccb259b2f58fe
Author: Dustin Sallings 
Date:   Mon Jul 24 00:58:38 2006 -0700

    A proper object transcoder.

commit c80333dfe45adc4d95a774ebce02a1e46c02100f
Author: Dustin Sallings 
Date:   Sun Jul 23 19:52:08 2006 -0700

    New transcoder model.

commit afe8e17710e8dc5993aadaf6043afdb281a1cbdd
Author: Dustin Sallings 
Date:   Sun Jul 23 19:30:00 2006 -0700

    initial import
    (automatically generated log message)

commit c0772446a20d62bcaf7104527c0ea512b817a7b1
Author: Dustin Sallings 
Date:   Mon Mar 26 22:20:24 2007 -0700

    Tailor preparing to convert repo by adding .hgignore