Ejemplo n.º 1
0
  protected long getNextScan(Subscription sub) {
    SubscriptionHistory history = sub.getHistory();

    Long fail_count = (Long) sub.getUserData(SCHEDULER_FAILED_SCAN_CONSEC_KEY);

    if (fail_count != null) {

      long fail_time = ((Long) sub.getUserData(SCHEDULER_FAILED_SCAN_TIME_KEY)).longValue();

      long fails = fail_count.longValue();

      long backoff = FAIL_INIT_DELAY;

      for (int i = 1; i < fails; i++) {

        backoff <<= 1;

        if (backoff > FAIL_MAX_DELAY) {

          backoff = FAIL_MAX_DELAY;

          break;
        }
      }

      return (fail_time + backoff);
    }

    return (history.getNextScanTime());
  }