diff --git a/Core/src/org/sleuthkit/autopsy/ingest/IngestManager.java b/Core/src/org/sleuthkit/autopsy/ingest/IngestManager.java index 08600da2d2..85ca8220b8 100644 --- a/Core/src/org/sleuthkit/autopsy/ingest/IngestManager.java +++ b/Core/src/org/sleuthkit/autopsy/ingest/IngestManager.java @@ -59,7 +59,7 @@ public class IngestManager { //queues private final IngestScheduler scheduler; //workers - private IngestAbstractFileThread abstractFileIngester; + private IngestAbstractFileProcessor abstractFileIngester; private List imageIngesters; private SwingWorker queueWorker; //modules @@ -250,7 +250,9 @@ public class IngestManager { } /** - * Schedule a file for ingest. + * Schedule a file for ingest. + * Scheduler updates the current progress. + * * The file is usually a product of a recently ran ingest. * Now we want to process this file with the same ingest context. * @@ -346,7 +348,7 @@ public class IngestManager { if (startAbstractFileIngester) { stats = new IngestManagerStats(); - abstractFileIngester = new IngestAbstractFileThread(); + abstractFileIngester = new IngestAbstractFileProcessor(); //init all fs modules, everytime new worker starts for (IngestModuleAbstractFile s : abstractFileModules) { IngestModuleInit moduleInit = new IngestModuleInit(); @@ -790,11 +792,13 @@ public class IngestManager { //ingester worker for AbstractFile queue //worker runs until AbstractFile queue is consumed //and if needed, new instance is created and started when data arrives - private class IngestAbstractFileThread extends SwingWorker { + private class IngestAbstractFileProcessor extends SwingWorker { - private Logger logger = Logger.getLogger(IngestAbstractFileThread.class.getName()); + private Logger logger = Logger.getLogger(IngestAbstractFileProcessor.class.getName()); + + //progress bar private ProgressHandle progress; - + @Override protected Object doInBackground() throws Exception { @@ -814,14 +818,16 @@ public class IngestManager { if (progress != null) { progress.setDisplayName(displayName + " (Cancelling...)"); } - return IngestAbstractFileThread.this.cancel(true); + return IngestAbstractFileProcessor.this.cancel(true); } }); final IngestScheduler.FileScheduler fileScheduler = scheduler.getFileScheduler(); + //initialize the progress bar progress.start(); progress.switchToIndeterminate(); + //set initial totals and processed (to be updated as we process or new files are scheduled) int totalEnqueuedFiles = fileScheduler.getFilesEnqueuedEst(); progress.switchToDeterminate(totalEnqueuedFiles); int processedFiles = 0; @@ -858,7 +864,7 @@ public class IngestManager { } } catch (Exception e) { - logger.log(Level.WARNING, "Exception from module: " + module.getName(), e); + logger.log(Level.SEVERE, "Error: unexpected exception from module: " + module.getName(), e); stats.addError(module); } } @@ -867,12 +873,12 @@ public class IngestManager { if (newTotalEnqueuedFiles > totalEnqueuedFiles) { //update if new enqueued totalEnqueuedFiles = newTotalEnqueuedFiles + 1;// + processedFiles + 1; - processedFiles = 0; + //processedFiles = 0; + //reset progress.switchToIndeterminate(); progress.switchToDeterminate(totalEnqueuedFiles); } if (processedFiles < totalEnqueuedFiles) { //fix for now to handle the same image enqueued twice - ++processedFiles; } //--totalEnqueuedFiles; diff --git a/Core/src/org/sleuthkit/autopsy/ingest/IngestScheduler.java b/Core/src/org/sleuthkit/autopsy/ingest/IngestScheduler.java index b7aaa71e0b..cc1bdec786 100644 --- a/Core/src/org/sleuthkit/autopsy/ingest/IngestScheduler.java +++ b/Core/src/org/sleuthkit/autopsy/ingest/IngestScheduler.java @@ -18,7 +18,6 @@ */ package org.sleuthkit.autopsy.ingest; -import java.sql.ResultSet; import java.util.ArrayList; import java.util.Collection; import java.util.Comparator; @@ -160,11 +159,11 @@ class IngestScheduler { /** * query num files enqueued total num of files to be enqueued. * - * Checks files for all the images currently in the queues. + * Counts all files for all the images currently in the queues. * * @return approx. total num of files enqueued (or to be enqueued) */ - private synchronized int queryNumFiles() { + private synchronized int queryNumFilesinEnqueuedImages() { int totalFiles = 0; List images = getImages(); @@ -368,7 +367,7 @@ class IngestScheduler { ProcessTask fileTask = new ProcessTask(file, originalContext); if (shouldEnqueueTask(fileTask)) { this.curFileProcessTasks.addFirst(fileTask); - this.filesEnqueuedEst = queryNumFiles(); + ++filesEnqueuedEst; } @@ -403,7 +402,7 @@ class IngestScheduler { //adds and resorts the tasks this.rootProcessTasks.addAll(rootTasks); - this.filesEnqueuedEst = queryNumFiles(); + this.filesEnqueuedEst = queryNumFilesinEnqueuedImages(); //update the dir and file level queues if needed updateQueues(); @@ -774,8 +773,6 @@ class IngestScheduler { //queryB.append( "AND (type = "); //queryB.append(TskData.TSK_DB_FILES_TYPE_ENUM.FS.getFileType()); //queryB.append(")"); - - ResultSet rs = null; try { final String query = queryB.toString(); logger.log(Level.INFO, "Executing count files query: " + query);