protected void scheduleUploadCheck() { LOG.trace("Attempt to execute upload check: {}", uploadCheckInProgress); synchronized (uploadCheckLock) { if (!uploadCheckInProgress) { LOG.trace("Scheduling upload check with timeout: {}", strategy.getUploadCheckPeriod()); uploadCheckInProgress = true; executorContext.getScheduledExecutor().schedule(new Runnable() { @Override public void run() { synchronized (uploadCheckLock) { uploadCheckInProgress = false; } uploadIfNeeded(); } }, strategy.getUploadCheckPeriod(), TimeUnit.SECONDS); } else { LOG.trace("Upload check is already scheduled!"); } } }
private void processUploadDecision(LogUploadStrategyDecision decision) { switch (decision) { case UPLOAD: if (isUploadAllowed()) { LOG.debug("Going to upload logs"); transport.sync(); } break; case NOOP: if (strategy.getUploadCheckPeriod() > 0 && storage.getStatus().getRecordCount() > 0) { scheduleUploadCheck(); } break; default: break; } }