Permalink
Commits on Sep 23, 2016
  1. Clarify contract of context cache

    dsyer committed Sep 23, 2016
  2. If retry state key is null, context is not cached

    If the retry state has a null key it could be an error, but there
    are real work scenarios where that just means "no information"
    and the safest thing to do in that case is to simply not cache the
    retry context (so the retry callback is executed "naturally" and
    the exception bubbles up).
    
    See comment in gh-49 about Spring AMQP use case
    dsyer committed Sep 23, 2016
Commits on Sep 20, 2016
  1. Merge branch '1.1.x'

    Conflicts:
    	pom.xml
    dsyer committed Sep 20, 2016
  2. Find @Retryable on Target Class

    fixes #32
    garyrussell committed with dsyer Feb 10, 2016
Commits on Aug 24, 2016
  1. Chasing test coverage

    dsyer committed Aug 24, 2016
  2. Add support for rolling averages and attributes in RetryStatistics

    Using these you can get a pretty decent (if basic) hystrix-compatible
    metrics stream. The "open" state of the circuit is exposed as
    a RetryContext attribute for that purpose.
    dsyer committed Aug 24, 2016
Commits on Aug 23, 2016
  1. Always cache the context if it is global

    Circuit breakers, for instance, would like to store some state
    for the duration of the lifetime of the circuit. So the normal
    rule that the cache is not used until there is an error doesn't
    make as much sense.
    dsyer committed Aug 23, 2016
  2. Change the strategy for key generation in stateful retry

    There were a couple of issues to fix here. The first was that only
    the method arguments and not the method signature (or label) were
    being used in the key generator. Plus the arguments were being
    used as an array, which has a different hashcode on each invocation
    (a Collection would be better). Plus the interceptor builder
    didn't set the key generator in a circuit breaker, so all the method
    calls with different args are unique and they are supposed to be the
    same.
    
    See gh-49
    dsyer committed Aug 23, 2016
  3. Add support for label in @Retryable

    and test for it in RetryOperationsInterceptor
    dsyer committed Aug 23, 2016
  4. Check for null listeners

    dsyer committed Aug 23, 2016
  5. Line endings

    dsyer committed Aug 22, 2016
  6. Consolidate calls to parent.open()

    dsyer committed Aug 18, 2016
  7. Basic integration between statistics and circuit breaker

    Really just a check that the existing metrics make sense. Next
    step is to provide statistics for each circuit including
    information on circuit status and timeouts.
    dsyer committed Jun 21, 2016
  8. Initial working draft of circuit breaker retry policy

    User can manually configure a CircuitBreakerRetryPolicy
    but needs to be careful to use stateful retry and
    a RetryState where rollbackFor() is always false so that the
    recovery is applied.
    
    Better (probably) is to use @CircuitBreaker.
    dsyer committed Apr 16, 2016
  9. Find @Retryable on Target Class

    fixes #32
    garyrussell committed with dsyer Feb 10, 2016
  10. Add example of @Recover with args

    dsyer committed Aug 23, 2016
  11. Fix package name in README

    dsyer committed Aug 23, 2016
Commits on Jun 21, 2016
  1. Revert to snapshots

    dsyer committed Jun 21, 2016
  2. Update for 1.1.3

    dsyer committed Jun 21, 2016
  3. Add a label to RetryContext

    dsyer committed Jun 20, 2016
  4. Update to 1.2.0

    dsyer committed Jun 21, 2016
Commits on Apr 12, 2016
  1. Rethrow original exception even if exhausted only

    There doesn't seem to be much justification for throwing
    RetryExhaustedException unconditionally when the context
    is marked as exhausted. It would be better to behave,
    as far as the caller is concerned, as if the cause had
    been the original exception.
    dsyer committed Apr 12, 2016
Commits on Feb 12, 2016
  1. support private @Recover methods

    joshlong committed with dsyer Feb 12, 2016