mirror of
https://github.com/overcuriousity/autopsy-flatpak.git
synced 2025-07-13 08:26:15 +00:00
Merge pull request #2708 from wschaeferB/2453-AddImageCancelHanging-4.4.0
2453 add image cancel hanging 4.4.0
This commit is contained in:
commit
daa4650ea5
@ -21,6 +21,7 @@ package org.sleuthkit.autopsy.casemodule;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
import javax.annotation.concurrent.GuardedBy;
|
||||||
import org.openide.util.NbBundle;
|
import org.openide.util.NbBundle;
|
||||||
import org.sleuthkit.autopsy.corecomponentinterfaces.DataSourceProcessorCallback;
|
import org.sleuthkit.autopsy.corecomponentinterfaces.DataSourceProcessorCallback;
|
||||||
import org.sleuthkit.autopsy.corecomponentinterfaces.DataSourceProcessorCallback.DataSourceProcessorResult;
|
import org.sleuthkit.autopsy.corecomponentinterfaces.DataSourceProcessorCallback.DataSourceProcessorResult;
|
||||||
@ -61,6 +62,8 @@ class AddImageTask implements Runnable {
|
|||||||
* TODO (AUT-2021): Merge SleuthkitJNI.AddImageProcess and AddImageTask
|
* TODO (AUT-2021): Merge SleuthkitJNI.AddImageProcess and AddImageTask
|
||||||
*/
|
*/
|
||||||
private final Object tskAddImageProcessLock;
|
private final Object tskAddImageProcessLock;
|
||||||
|
|
||||||
|
@GuardedBy("tskAddImageProcessLock")
|
||||||
private boolean tskAddImageProcessStopped;
|
private boolean tskAddImageProcessStopped;
|
||||||
private SleuthkitJNI.CaseDbHandle.AddImageProcess tskAddImageProcess;
|
private SleuthkitJNI.CaseDbHandle.AddImageProcess tskAddImageProcess;
|
||||||
|
|
||||||
@ -77,8 +80,9 @@ class AddImageTask implements Runnable {
|
|||||||
* java.util.TimeZone.getID.
|
* java.util.TimeZone.getID.
|
||||||
* @param ignoreFatOrphanFiles Whether to parse orphans if the image has a
|
* @param ignoreFatOrphanFiles Whether to parse orphans if the image has a
|
||||||
* FAT filesystem.
|
* FAT filesystem.
|
||||||
* @param imageWriterPath Path that a copy of the image should be written to.
|
* @param imageWriterPath Path that a copy of the image should be
|
||||||
* Use empty string to disable image writing
|
* written to. Use empty string to disable image
|
||||||
|
* writing
|
||||||
* @param progressMonitor Progress monitor to report progress during
|
* @param progressMonitor Progress monitor to report progress during
|
||||||
* processing.
|
* processing.
|
||||||
* @param callback Callback to call when processing is done.
|
* @param callback Callback to call when processing is done.
|
||||||
@ -104,7 +108,7 @@ class AddImageTask implements Runnable {
|
|||||||
progressMonitor.setProgress(0);
|
progressMonitor.setProgress(0);
|
||||||
Case currentCase = Case.getCurrentCase();
|
Case currentCase = Case.getCurrentCase();
|
||||||
String imageWriterPath = "";
|
String imageWriterPath = "";
|
||||||
if(imageWriterSettings != null){
|
if (imageWriterSettings != null) {
|
||||||
imageWriterPath = imageWriterSettings.getPath();
|
imageWriterPath = imageWriterSettings.getPath();
|
||||||
}
|
}
|
||||||
List<String> errorMessages = new ArrayList<>();
|
List<String> errorMessages = new ArrayList<>();
|
||||||
@ -112,8 +116,12 @@ class AddImageTask implements Runnable {
|
|||||||
try {
|
try {
|
||||||
currentCase.getSleuthkitCase().acquireExclusiveLock();
|
currentCase.getSleuthkitCase().acquireExclusiveLock();
|
||||||
synchronized (tskAddImageProcessLock) {
|
synchronized (tskAddImageProcessLock) {
|
||||||
|
if (!tskAddImageProcessStopped) { //if we have already cancelled don't bother making an addImageProcess
|
||||||
tskAddImageProcess = currentCase.getSleuthkitCase().makeAddImageProcess(timeZone, true,
|
tskAddImageProcess = currentCase.getSleuthkitCase().makeAddImageProcess(timeZone, true,
|
||||||
ignoreFatOrphanFiles, imageWriterPath);
|
ignoreFatOrphanFiles, imageWriterPath);
|
||||||
|
} else {
|
||||||
|
return; //we have already cancelled so we do not want to add the image, returning will execute the finally block
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Thread progressUpdateThread = new Thread(new ProgressUpdater(progressMonitor, tskAddImageProcess));
|
Thread progressUpdateThread = new Thread(new ProgressUpdater(progressMonitor, tskAddImageProcess));
|
||||||
progressUpdateThread.start();
|
progressUpdateThread.start();
|
||||||
@ -142,6 +150,7 @@ class AddImageTask implements Runnable {
|
|||||||
*/
|
*/
|
||||||
public void cancelTask() {
|
public void cancelTask() {
|
||||||
synchronized (tskAddImageProcessLock) {
|
synchronized (tskAddImageProcessLock) {
|
||||||
|
tskAddImageProcessStopped = true;
|
||||||
if (null != tskAddImageProcess) {
|
if (null != tskAddImageProcess) {
|
||||||
try {
|
try {
|
||||||
/*
|
/*
|
||||||
@ -153,7 +162,7 @@ class AddImageTask implements Runnable {
|
|||||||
* called.
|
* called.
|
||||||
*/
|
*/
|
||||||
tskAddImageProcess.stop();
|
tskAddImageProcess.stop();
|
||||||
tskAddImageProcessStopped = true;
|
|
||||||
} catch (TskCoreException ex) {
|
} catch (TskCoreException ex) {
|
||||||
logger.log(Level.SEVERE, String.format("Error cancelling adding image %s to the case database", imagePath), ex); //NON-NLS
|
logger.log(Level.SEVERE, String.format("Error cancelling adding image %s to the case database", imagePath), ex); //NON-NLS
|
||||||
}
|
}
|
||||||
@ -213,7 +222,7 @@ class AddImageTask implements Runnable {
|
|||||||
if (!verificationError.isEmpty()) {
|
if (!verificationError.isEmpty()) {
|
||||||
errorMessages.add(verificationError);
|
errorMessages.add(verificationError);
|
||||||
}
|
}
|
||||||
if(imageWriterSettings != null){
|
if (imageWriterSettings != null) {
|
||||||
ImageWriterService.createImageWriter(imageId, imageWriterSettings);
|
ImageWriterService.createImageWriter(imageId, imageWriterSettings);
|
||||||
}
|
}
|
||||||
newDataSources.add(newImage);
|
newDataSources.add(newImage);
|
||||||
|
@ -19,6 +19,7 @@
|
|||||||
package org.sleuthkit.autopsy.casemodule;
|
package org.sleuthkit.autopsy.casemodule;
|
||||||
|
|
||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
|
import java.awt.Cursor;
|
||||||
import java.awt.EventQueue;
|
import java.awt.EventQueue;
|
||||||
import java.awt.Window;
|
import java.awt.Window;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@ -36,6 +37,7 @@ import org.openide.WizardDescriptor;
|
|||||||
import org.openide.util.HelpCtx;
|
import org.openide.util.HelpCtx;
|
||||||
import org.openide.util.Lookup;
|
import org.openide.util.Lookup;
|
||||||
import org.openide.util.NbBundle;
|
import org.openide.util.NbBundle;
|
||||||
|
import org.openide.windows.WindowManager;
|
||||||
import org.sleuthkit.autopsy.corecomponentinterfaces.DataSourceProcessor;
|
import org.sleuthkit.autopsy.corecomponentinterfaces.DataSourceProcessor;
|
||||||
import org.sleuthkit.autopsy.corecomponentinterfaces.DataSourceProcessorCallback;
|
import org.sleuthkit.autopsy.corecomponentinterfaces.DataSourceProcessorCallback;
|
||||||
import org.sleuthkit.autopsy.corecomponentinterfaces.DataSourceProcessorProgressMonitor;
|
import org.sleuthkit.autopsy.corecomponentinterfaces.DataSourceProcessorProgressMonitor;
|
||||||
@ -319,8 +321,10 @@ class AddImageWizardAddingProgressPanel extends ShortcutWizardDescriptorPanel {
|
|||||||
cleanupTask = addImageAction.new CleanupTask() {
|
cleanupTask = addImageAction.new CleanupTask() {
|
||||||
@Override
|
@Override
|
||||||
void cleanup() throws Exception {
|
void cleanup() throws Exception {
|
||||||
|
WindowManager.getDefault().getMainWindow().setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
|
||||||
cancelDataSourceProcessing(dataSourceId);
|
cancelDataSourceProcessing(dataSourceId);
|
||||||
cancelled = true;
|
cancelled = true;
|
||||||
|
WindowManager.getDefault().getMainWindow().setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user