diff --git a/CHANGELOG.md b/CHANGELOG.md index da709766cc..0d91a20431 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ # [23.10.1] - 2023/12/07 * [UI]: Fixed issue where filter inputs required focus when they are opened on the project samples page. See [PR 1503](https://github.com/phac-nml/irida/pull/1503) * [UI]: Fixed bug preventing sorting and paging on the project members page. See [PR 1504](https://github.com/phac-nml/irida/pull/1504) +* [Developer]: Fixed race condition where FastQC file processor would start on incomplete file by filtering out files on non complete sequencing runs. [PR 1506](https://github.com/phac-nml/irida/pull/1506) ## [23.10] - 2023/10/15 * [Developer]: Added functionality to delete sequence files from file system when a sequence run is removed. [See PR 1468](https://github.com/phac-nml/irida/pull/1468) diff --git a/src/main/java/ca/corefacility/bioinformatics/irida/service/SequencingObjectProcessingService.java b/src/main/java/ca/corefacility/bioinformatics/irida/service/SequencingObjectProcessingService.java index 3970d1e317..211b53c0d5 100644 --- a/src/main/java/ca/corefacility/bioinformatics/irida/service/SequencingObjectProcessingService.java +++ b/src/main/java/ca/corefacility/bioinformatics/irida/service/SequencingObjectProcessingService.java @@ -1,6 +1,7 @@ package ca.corefacility.bioinformatics.irida.service; import ca.corefacility.bioinformatics.irida.model.sequenceFile.SequencingObject; +import ca.corefacility.bioinformatics.irida.model.enums.SequencingRunUploadStatus; import ca.corefacility.bioinformatics.irida.processing.FileProcessingChain; import ca.corefacility.bioinformatics.irida.repositories.sequencefile.SequencingObjectRepository; import ca.corefacility.bioinformatics.irida.service.impl.processor.SequenceFileProcessorLauncher; @@ -66,6 +67,12 @@ public synchronized void findFilesToProcess() { List toProcess = sequencingObjectRepository .getSequencingObjectsWithProcessingState(SequencingObject.ProcessingState.UNPROCESSED); + // filter out sequencing objects on a SequencingRun that is not in a COMPLETE state + toProcess.removeIf(seqObj -> ( + (seqObj.getSequencingRun() != null) && + (!seqObj.getSequencingRun().getUploadStatus().equals(SequencingRunUploadStatus.COMPLETE)) + )); + // individually loop through and mark the ones we're going to process. Looping individually so 2 processes are less likely to write at the same time. Iterator iterator = toProcess.iterator();