7712 scheduled weekly ingest pause

This commit is contained in:
Richard Cordovano 2021-06-28 17:12:54 -04:00
parent f4462ed78e
commit 03675696f7
2 changed files with 19 additions and 3 deletions

View File

@ -18,6 +18,7 @@
*/ */
package org.sleuthkit.autopsy.ingest; package org.sleuthkit.autopsy.ingest;
import java.time.LocalDateTime;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.Date; import java.util.Date;
@ -597,6 +598,14 @@ final class IngestJobPipeline {
} }
} }
ScheduledIngestPauseSettings.setPauseEnabled(true);
LocalDateTime testDateTime = LocalDateTime.now();
testDateTime.plusMinutes(2);
ScheduledIngestPauseSettings.setPauseDayOfWeek(testDateTime.getDayOfWeek());
ScheduledIngestPauseSettings.setPauseStartTimeHour(testDateTime.getHour());
ScheduledIngestPauseSettings.setPauseStartTimeMinute(testDateTime.getMinute());
ScheduledIngestPauseSettings.setPauseDurationMinutes(2);
return errors; return errors;
} }

View File

@ -180,6 +180,9 @@ abstract class IngestTaskPipeline<T extends IngestTask> {
List<IngestModuleError> errors = new ArrayList<>(); List<IngestModuleError> errors = new ArrayList<>();
if (!this.ingestJobPipeline.isCancelled()) { if (!this.ingestJobPipeline.isCancelled()) {
pauseIfScheduled(); pauseIfScheduled();
if (ingestJobPipeline.isCancelled()) {
return errors;
}
try { try {
prepareTask(task); prepareTask(task);
} catch (IngestTaskPipelineException ex) { } catch (IngestTaskPipelineException ex) {
@ -188,6 +191,9 @@ abstract class IngestTaskPipeline<T extends IngestTask> {
} }
for (PipelineModule<T> module : modules) { for (PipelineModule<T> module : modules) {
pauseIfScheduled(); pauseIfScheduled();
if (ingestJobPipeline.isCancelled()) {
break;
}
try { try {
currentModule = module; currentModule = module;
currentModule.setProcessingStartTime(); currentModule.setProcessingStartTime();
@ -228,6 +234,7 @@ abstract class IngestTaskPipeline<T extends IngestTask> {
} }
pauseStart = pauseStart.withHour(ScheduledIngestPauseSettings.getPauseStartTimeHour()); pauseStart = pauseStart.withHour(ScheduledIngestPauseSettings.getPauseStartTimeHour());
pauseStart = pauseStart.withMinute(ScheduledIngestPauseSettings.getPauseStartTimeMinute()); pauseStart = pauseStart.withMinute(ScheduledIngestPauseSettings.getPauseStartTimeMinute());
pauseStart = pauseStart.withSecond(0);
/* /*
* Calculate the pause end date/time. * Calculate the pause end date/time.
@ -241,11 +248,11 @@ abstract class IngestTaskPipeline<T extends IngestTask> {
* whatever time remains in the pause interval has expired. * whatever time remains in the pause interval has expired.
*/ */
LocalDateTime timeNow = LocalDateTime.now(); LocalDateTime timeNow = LocalDateTime.now();
long timeRemainingMillis = ChronoUnit.MILLIS.between(timeNow, pauseEnd); if ((timeNow.equals(pauseStart) || timeNow.isAfter(pauseStart)) && timeNow.isBefore(pauseEnd)) {
if (timeNow.isAfter(pauseStart) && timeNow.isBefore(pauseEnd) && timeRemainingMillis > 0) {
ingestJobPipeline.registerPausedIngestThread(Thread.currentThread()); ingestJobPipeline.registerPausedIngestThread(Thread.currentThread());
try { try {
logger.log(Level.INFO, String.format("%s pausing at %s for %d minutes", Thread.currentThread().getName(), LocalDateTime.now(), TimeUnit.MILLISECONDS.toMinutes(timeRemainingMillis))); long timeRemainingMillis = ChronoUnit.MILLIS.between(timeNow, pauseEnd);
logger.log(Level.INFO, String.format("%s pausing at %s for ~%d minutes", Thread.currentThread().getName(), LocalDateTime.now(), TimeUnit.MILLISECONDS.toMinutes(timeRemainingMillis)));
sleep(timeRemainingMillis); sleep(timeRemainingMillis);
logger.log(Level.INFO, String.format("%s resuming at %s", Thread.currentThread().getName(), LocalDateTime.now())); logger.log(Level.INFO, String.format("%s resuming at %s", Thread.currentThread().getName(), LocalDateTime.now()));
} catch (InterruptedException notLogged) { } catch (InterruptedException notLogged) {