Skip to content
Commits on Oct 27, 2009
  1. Allow MemcachedClient and AsciiOperationFactory extensibility.

    committed
    While I don't encourage people to just randomly start changing stuff,
    I also shouldn't assume I'm smarter than my users.  :)
  2. @ingenthr

    Some javadoc cleanup in MemcachedClient examples.

    ingenthr committed with
    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.
  3. Handle operations that are writing and reading at the same time.

    committed
    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.
Commits on Oct 23, 2009
  1. @klafferty
Commits on Oct 22, 2009
  1. @klafferty

    MemcachedConnection constructor should catch SocketException

    klafferty committed with
    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.<init>(MemcachedConnection.java:80)
    	at net.spy.memcached.DefaultConnectionFactory.createConnection(DefaultConnectionFactory.java:84)
    	at net.spy.memcached.MemcachedClient.<init>(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)
  2. Removed a debugging stdout thing.

    committed
  3. StorageListener should be public.

    committed
Commits on Oct 14, 2009
  1. Compile targetting 1.5.

    committed
Commits on Oct 13, 2009
  1. Configurable max reconnect delay.

    committed
  2. @lzimm

    Fixed bug in sequence number wrapping (bug90).

    lzimm committed with
    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.
Commits on Sep 26, 2009
  1. Some doc and style cleanup.

    committed
  2. Moved ketama stuff to util.

    committed
  3. @ciaranj
Commits on Sep 24, 2009
  1. Cleaned up all javadoc warnings.

    committed
  2. Fix javadoc @see links.

    committed
  3. Cleaning up docs a bit.

    committed
  4. Update the toplevel package.html

    committed
Commits on Sep 23, 2009
  1. Updated site task.

    committed
  2. Use emma as the coverage tool.

    committed
  3. Add a convenient protocol setter.

    committed
  4. ConnectionFactoryBuilder

    committed
Commits on Sep 20, 2009
  1. Optimize binary protocol sets.

    committed
    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.
Commits on Sep 19, 2009
Something went wrong with that request. Please try again.