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

net.spy.memcached.internal.CheckedOperationTimeoutException Maven / Gradle / Ivy

There is a newer version: 2.8.4
Show newest version
package net.spy.memcached.internal;

import java.util.Collection;
import java.util.Collections;
import java.util.concurrent.TimeoutException;

import net.spy.memcached.MemcachedNode;
import net.spy.memcached.ops.Operation;

/**
 * Timeout exception that tracks the original operation.
 */
public class CheckedOperationTimeoutException extends TimeoutException {

	private static final long serialVersionUID = 139074906690883031L;

	private final Collection operations;

	/**
	 * Construct a CheckedOperationTimeoutException with the given message
	 * and operation.
	 *
	 * @param message the message
	 * @param op the operation that timed out
	 */
	public CheckedOperationTimeoutException(String message, Operation op) {
		this(message, Collections.singleton(op));
	}

	public CheckedOperationTimeoutException(String message,
			Collection ops) {
		super(createMessage(message, ops));
		operations = ops;
	}

	private static String createMessage(String message,
			Collection ops) {
		StringBuilder rv = new StringBuilder(message);
		rv.append(" - failing node");
		rv.append(ops.size() == 1 ? ": " : "s: ");
		boolean first = true;
		for(Operation op : ops) {
			if(first) {
				first = false;
			} else {
				rv.append(", ");
			}
			MemcachedNode node = op == null ? null : op.getHandlingNode();
			rv.append(node == null ? "" : node.getSocketAddress());
		}
		return rv.toString();
	}

	/**
	 * Get the operation that timed out.
	 */
	public Collection getOperations() {
		return operations;
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy