@Override public RetryDecision onUnavailable(Statement statement, ConsistencyLevel consistencyLevel, int requiredReplica, int aliveReplica, int retries) { if (retries >= 10) { return RetryDecision.rethrow(); } try { int jitter = ThreadLocalRandom.current().nextInt(100); int delay = (100 * (retries + 1)) + jitter; Thread.sleep(delay); return RetryDecision.retry(consistencyLevel); } catch (InterruptedException e) { Thread.currentThread().interrupt(); return RetryDecision.rethrow(); } }
@Override public RetryDecision onReadTimeout(Statement statement, ConsistencyLevel cl, int requiredResponses, int receivedResponses, boolean dataRetrieved, int nbRetry) { if (nbRetry == m_retryCount) return RetryDecision.rethrow(); else { int count = m_readRetries.incrementAndGet(); return RetryDecision.tryNextHost(cl); } }
@Override public RetryDecision onRequestError(Statement statement, ConsistencyLevel cl, DriverException e, int nbRetry) { if (nbRetry == m_retryCount) return RetryDecision.rethrow(); else { m_errorRetries.incrementAndGet(); return RetryDecision.tryNextHost(cl); } }
/** * {@inheritDoc} * * <p>This implementation always returns {@code RetryDecision.rethrow()}. */ @Override public RetryDecision onWriteTimeout( Statement statement, ConsistencyLevel cl, WriteType writeType, int requiredAcks, int receivedAcks, int nbRetry) { return RetryDecision.rethrow(); }
/** * {@inheritDoc} * * <p>This implementation always returns {@code RetryDecision.rethrow()}. */ @Override public RetryDecision onReadTimeout( Statement statement, ConsistencyLevel cl, int requiredResponses, int receivedResponses, boolean dataRetrieved, int nbRetry) { return RetryDecision.rethrow(); }
/** * {@inheritDoc} * * <p>This implementation always returns {@code RetryDecision.rethrow()}. */ @Override public RetryDecision onUnavailable( Statement statement, ConsistencyLevel cl, int requiredReplica, int aliveReplica, int nbRetry) { return RetryDecision.rethrow(); }
@Override public RetryDecision onWriteTimeout( Statement statement, ConsistencyLevel cl, WriteType writeType, int requiredAcks, int receivedAcks, int nbRetry) { if (isIdempotent(statement)) return childPolicy.onWriteTimeout( statement, cl, writeType, requiredAcks, receivedAcks, nbRetry); else return RetryDecision.rethrow(); }
private RetryDecision maxLikelyToWorkCL(int knownOk, ConsistencyLevel currentCL) { if (knownOk >= 3) return RetryDecision.retry(ConsistencyLevel.THREE); if (knownOk == 2) return RetryDecision.retry(ConsistencyLevel.TWO); // JAVA-1005: EACH_QUORUM does not report a global number of alive replicas // so even if we get 0 alive replicas, there might be // a node up in some other datacenter if (knownOk == 1 || currentCL == ConsistencyLevel.EACH_QUORUM) return RetryDecision.retry(ConsistencyLevel.ONE); return RetryDecision.rethrow(); }
/** * {@inheritDoc} * * <p>This implementation always returns {@code RetryDecision.rethrow()}. */ @Override public RetryDecision onRequestError( Statement statement, ConsistencyLevel cl, DriverException e, int nbRetry) { return RetryDecision.rethrow(); }
@Override public RetryDecision onReadTimeout( Statement statement, ConsistencyLevel cl, int requiredResponses, int receivedResponses, boolean dataRetrieved, int nbRetry) { if (nbRetry != 0) return RetryDecision.rethrow(); return RetryDecision.retry(ConsistencyLevel.ONE); }
@Override public RetryDecision onReadTimeout( Statement statement, ConsistencyLevel cl, int requiredResponses, int receivedResponses, boolean dataRetrieved, int nbRetry) { return RetryDecision.rethrow(); }
/** {@inheritDoc} */ @Override public RetryDecision onRequestError( Statement statement, ConsistencyLevel cl, DriverException e, int nbRetry) { // do not retry these by default as they generally indicate a data problem or // other issue that is unlikely to be resolved by a retry. if (e instanceof WriteFailureException || e instanceof ReadFailureException) { return RetryDecision.rethrow(); } return RetryDecision.tryNextHost(cl); }
@Override public RetryDecision onUnavailable( Statement statement, ConsistencyLevel cl, int requiredReplica, int aliveReplica, int nbRetry) { return (nbRetry == 0) ? RetryDecision.retry(cl) : RetryDecision.rethrow(); }
@Override public RetryDecision onWriteTimeout( Statement statement, ConsistencyLevel cl, WriteType writeType, int requiredAcks, int receivedAcks, int nbRetry) { return RetryDecision.rethrow(); }
@Override public RetryDecision onWriteTimeout( Statement statement, ConsistencyLevel cl, WriteType writeType, int requiredAcks, int receivedAcks, int nbRetry) { return RetryDecision.rethrow(); }
@Override public RetryDecision onRequestError( Statement statement, ConsistencyLevel cl, DriverException e, int nbRetry) { return RetryDecision.rethrow(); }
@Override public RetryDecision onRequestError( Statement statement, ConsistencyLevel cl, DriverException e, int nbRetry) { if (isIdempotent(statement)) return childPolicy.onRequestError(statement, cl, e, nbRetry); else return RetryDecision.rethrow(); }
@Override public RetryDecision onUnavailable( Statement statement, ConsistencyLevel cl, int requiredReplica, int aliveReplica, int nbRetry) { return RetryDecision.rethrow(); }
@Override public RetryDecision onUnavailable(Statement statement, ConsistencyLevel cl, int requiredReplica, int aliveReplica, int nbRetry) { if (nbRetry == m_retryCount) return RetryDecision.rethrow(); else { m_unavailableRetries.incrementAndGet(); return RetryDecision.tryNextHost(cl); } }
@Override public RetryDecision onWriteTimeout(Statement statement, ConsistencyLevel cl, WriteType writeType, int requiredAcks, int receivedAcks, int nbRetry) { if (nbRetry == m_retryCount) return RetryDecision.rethrow(); else { m_writeRetries.incrementAndGet(); return RetryDecision.tryNextHost(cl); } }