diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/LocalFilesPanel.java b/Core/src/org/sleuthkit/autopsy/casemodule/LocalFilesPanel.java
index b1554eb080..ecfafd7844 100644
--- a/Core/src/org/sleuthkit/autopsy/casemodule/LocalFilesPanel.java
+++ b/Core/src/org/sleuthkit/autopsy/casemodule/LocalFilesPanel.java
@@ -191,6 +191,9 @@ final class LocalFilesPanel extends javax.swing.JPanel {
StringBuilder allPaths = new StringBuilder();
for (File f : files) {
currentFiles.add(f);
+ }
+ for (File f : currentFiles) {
+ //loop over set of all files to ensure list is accurate
//update label
allPaths.append(f.getAbsolutePath()).append("\n");
}
diff --git a/Core/src/org/sleuthkit/autopsy/ingest/DataSourceIngestJob.java b/Core/src/org/sleuthkit/autopsy/ingest/DataSourceIngestJob.java
index d39acd8f49..119d879801 100644
--- a/Core/src/org/sleuthkit/autopsy/ingest/DataSourceIngestJob.java
+++ b/Core/src/org/sleuthkit/autopsy/ingest/DataSourceIngestJob.java
@@ -524,7 +524,11 @@ final class DataSourceIngestJob {
DataSourceIngestJob.taskScheduler.scheduleDataSourceIngestTask(this);
} else {
logger.log(Level.INFO, "Scheduling file level analysis tasks for {0} (jobId={1}), no first stage data source level analysis configured", new Object[]{dataSource.getName(), this.id}); //NON-NLS
- DataSourceIngestJob.taskScheduler.scheduleFileIngestTasks(this, this.files);
+ if (this.files.isEmpty()) {
+ DataSourceIngestJob.taskScheduler.scheduleFileIngestTasks(this);
+ } else {
+ DataSourceIngestJob.taskScheduler.scheduleFileIngestTasks(this, this.files);
+ }
/**
* No data source ingest task has been scheduled for this stage, and
diff --git a/Core/src/org/sleuthkit/autopsy/ingest/IngestTasksScheduler.java b/Core/src/org/sleuthkit/autopsy/ingest/IngestTasksScheduler.java
index 36b09035b1..d528b2b7d6 100644
--- a/Core/src/org/sleuthkit/autopsy/ingest/IngestTasksScheduler.java
+++ b/Core/src/org/sleuthkit/autopsy/ingest/IngestTasksScheduler.java
@@ -211,16 +211,23 @@ final class IngestTasksScheduler {
* method is adding derived files from a higher priority task that
* preceded the tasks currently in the queue.
*/
- for (FileIngestTask newTask : newTasksForFileIngestThreads) {
- try {
- this.queuedAndRunningFileTasks.add(newTask);
- this.fileTaskQueueForIngestThreads.addFirst(newTask);
- } catch (InterruptedException ex) {
- this.queuedAndRunningFileTasks.remove(newTask);
- IngestTasksScheduler.logger.log(Level.INFO, "Ingest cancelled while blocked on a full file ingest threads queue", ex);
- Thread.currentThread().interrupt();
- break;
+ if (!newTasksForFileIngestThreads.isEmpty()) {
+ for (FileIngestTask newTask : newTasksForFileIngestThreads) {
+ try {
+ this.queuedAndRunningFileTasks.add(newTask);
+ this.fileTaskQueueForIngestThreads.addFirst(newTask);
+ } catch (InterruptedException ex) {
+ this.queuedAndRunningFileTasks.remove(newTask);
+ IngestTasksScheduler.logger.log(Level.INFO, "Ingest cancelled while blocked on a full file ingest threads queue", ex);
+ Thread.currentThread().interrupt();
+ break;
+ }
}
+ } else {
+ /*
+ * Only directory tasks were queued, so shuffle.
+ */
+ this.shuffleFileTaskQueues();
}
}
}
diff --git a/ruleset.xml b/ruleset.xml
index 5d39ea689e..ef167f0fc9 100644
--- a/ruleset.xml
+++ b/ruleset.xml
@@ -58,7 +58,7 @@
-
+