Execution Context

Failsafe can provide an ExecutionContext containing execution related information such as the number of execution attempts, start and elapsed times, and the last result or exception:

Failsafe.with(retryPolicy).run(ctx -> {
  log.debug("Connection attempt #{}", ctx.getAttemptCount());
  connect();
});

This is useful for retrying executions that depend on results from a previous attempt:

int result = Failsafe.with(retryPolicy).get(ctx -> ctx.getLastResult(0) + 1);