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

com.netflix.dyno.connectionpool.RetryPolicy Maven / Gradle / Ivy

There is a newer version: 1.9.1
Show newest version
/*******************************************************************************
 * Copyright 2011 Netflix
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 ******************************************************************************/
package com.netflix.dyno.connectionpool;

/**
 * Interface for retry policies when executing an {@link Operation}.
 *
 * @author poberai, jcacciatore
 */
public interface RetryPolicy {
    /**
     * Operation is starting
     */
    void begin();

    /**
     * Operation has completed successfully
     */
    void success();

    /**
     * Operation has failed
     */
    void failure(Exception e);

    /**
     * Ask the policy if a retry is allowed. Note that this will return false if {@link #success()} has been called.
     *
     * @return boolean
     */
    boolean allowRetry();

    /**
     * Ask the policy is a retry can use a remote zone (rack)
     *
     * @return boolean
     */
    boolean allowCrossZoneFallback();

    /**
     * Return the number of attempts since {@link #begin()} was called
     *
     * @return int
     */
    int getAttemptCount();

    public static interface RetryPolicyFactory {
        public RetryPolicy getRetryPolicy();
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy