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

org.infinispan.statetransfer.OutdatedTopologyException Maven / Gradle / Ivy

There is a newer version: 15.1.0.Dev04
Show newest version
package org.infinispan.statetransfer;

import org.infinispan.commons.CacheException;

/**
 * An exception signalling that a command should be retried because a newer topology was seen during execution.
 *
 * 

Most of the time, read commands can be retried in the same topology, so they use a delta of 0, * see {@link #RETRY_SAME_TOPOLOGY}. * Write commands cannot be retried in the same topology, so they always use a delta of 1 (or more).

* *

This exception can be thrown very often when node is joining or leaving, so it has not stack trace information, * and using the constants is preferred.

* * @author Dan Berindei * @since 6.0 */ public class OutdatedTopologyException extends CacheException { private static final long serialVersionUID = -7405935610562980779L; public final int topologyIdDelta; /** * A cached instance that requests the command's topology id + 1. */ public static final OutdatedTopologyException RETRY_NEXT_TOPOLOGY = new OutdatedTopologyException("Retry in the next topology", 1); /** * A cached instance, used for read commands that need to be retried in the same topology. * *

This happens because we read from backup owners when the primary owners no longer have the entry, * so we only retry when all of the owners reply with an UnsureResponse. * Topologies T and T+1 always have at least one read owner in common, so receiving UnsureResponse from all the * owners means either one owner had topology T+2 and by now we have at least T+1, or one owner had topology T-1 * and another had T+1, and by now all should have at least T.

*/ public static final OutdatedTopologyException RETRY_SAME_TOPOLOGY = new OutdatedTopologyException("Retry command in the same topology", 0); private OutdatedTopologyException(String message, int topologyIdDelta) { super(message, null, false, false); this.topologyIdDelta = topologyIdDelta; } /** * Request the next topology (delta = 1) and use a custom message. * * @deprecated Since 10.0, please use the constants */ @Deprecated(forRemoval=true, since = "10.0") public OutdatedTopologyException(String msg) { super(msg, null, false, false); this.topologyIdDelta = 1; } /** * Request retrying the command in explicitly set topology (or later one). * * @deprecated Since 10.0, the explicit topology is ignored and the delta is set to 1 */ @Deprecated(forRemoval=true, since = "10.0") public OutdatedTopologyException(int topologyIdDelta) { this(null, 1); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy