From 03675696f7619faaeb38240ba32d6809b521263c Mon Sep 17 00:00:00 2001 From: Richard Cordovano Date: Mon, 28 Jun 2021 17:12:54 -0400 Subject: [PATCH] 7712 scheduled weekly ingest pause --- .../sleuthkit/autopsy/ingest/IngestJobPipeline.java | 9 +++++++++ .../autopsy/ingest/IngestTaskPipeline.java | 13 ++++++++++--- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/ingest/IngestJobPipeline.java b/Core/src/org/sleuthkit/autopsy/ingest/IngestJobPipeline.java index f057dcdc12..ee1a6a0831 100644 --- a/Core/src/org/sleuthkit/autopsy/ingest/IngestJobPipeline.java +++ b/Core/src/org/sleuthkit/autopsy/ingest/IngestJobPipeline.java @@ -18,6 +18,7 @@ */ package org.sleuthkit.autopsy.ingest; +import java.time.LocalDateTime; import java.util.ArrayList; import java.util.Collections; 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; } diff --git a/Core/src/org/sleuthkit/autopsy/ingest/IngestTaskPipeline.java b/Core/src/org/sleuthkit/autopsy/ingest/IngestTaskPipeline.java index ce64cd670e..aafbdb14fa 100755 --- a/Core/src/org/sleuthkit/autopsy/ingest/IngestTaskPipeline.java +++ b/Core/src/org/sleuthkit/autopsy/ingest/IngestTaskPipeline.java @@ -180,6 +180,9 @@ abstract class IngestTaskPipeline { List errors = new ArrayList<>(); if (!this.ingestJobPipeline.isCancelled()) { pauseIfScheduled(); + if (ingestJobPipeline.isCancelled()) { + return errors; + } try { prepareTask(task); } catch (IngestTaskPipelineException ex) { @@ -188,6 +191,9 @@ abstract class IngestTaskPipeline { } for (PipelineModule module : modules) { pauseIfScheduled(); + if (ingestJobPipeline.isCancelled()) { + break; + } try { currentModule = module; currentModule.setProcessingStartTime(); @@ -228,6 +234,7 @@ abstract class IngestTaskPipeline { } pauseStart = pauseStart.withHour(ScheduledIngestPauseSettings.getPauseStartTimeHour()); pauseStart = pauseStart.withMinute(ScheduledIngestPauseSettings.getPauseStartTimeMinute()); + pauseStart = pauseStart.withSecond(0); /* * Calculate the pause end date/time. @@ -241,11 +248,11 @@ abstract class IngestTaskPipeline { * whatever time remains in the pause interval has expired. */ LocalDateTime timeNow = LocalDateTime.now(); - long timeRemainingMillis = ChronoUnit.MILLIS.between(timeNow, pauseEnd); - if (timeNow.isAfter(pauseStart) && timeNow.isBefore(pauseEnd) && timeRemainingMillis > 0) { + if ((timeNow.equals(pauseStart) || timeNow.isAfter(pauseStart)) && timeNow.isBefore(pauseEnd)) { ingestJobPipeline.registerPausedIngestThread(Thread.currentThread()); 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); logger.log(Level.INFO, String.format("%s resuming at %s", Thread.currentThread().getName(), LocalDateTime.now())); } catch (InterruptedException notLogged) {