Example #1
0
  private void fetchAndDeleteMessages() throws Exception {
    Integer sizes[] = connection.getMessageSizes();

    LOG.info("Found %d new message(s) on remote server", sizes.length);
    IOExceptionHandler.getInstance().resetSyncCounter(mbox);
    for (int msgno = sizes.length; msgno > 0; --msgno) {
      LOG.debug("Fetching message number %d", msgno);
      IOExceptionHandler.getInstance().trackSyncItem(mbox, msgno);
      try {
        fetchAndAddMessage(msgno, sizes[msgno - 1], null, true);
      } catch (Exception e) {
        if (IOExceptionHandler.getInstance().isRecoverable(mbox, msgno, "pop sync fail", e)) {
          // don't delete msg; if we end up aborting we want it still to exist
          // skip it; will be retried on every subsequent sync
          continue;
        }
        throw e;
      }
      checkIsEnabled();
      connection.deleteMessage(msgno);
    }
    IOExceptionHandler.getInstance().checkpointIOExceptionRate(mbox);
  }