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: transport.sync(); break; case NOOP: if (strategy.getUploadCheckPeriod() > 0 && storage.getStatus().getRecordCount() > 0) { scheduleUploadCheck(); } break; default: break; } }