@@ -259,6 +259,10 @@ def __init__(self, metadata_dir: str | PathLike, files_dir: str | PathLike):
259259
260260 self .metadata = SubmissionMetadata (self .metadata_dir / "metadata.json" )
261261
262+ @property
263+ def submission_id (self ) -> str :
264+ return self .metadata .content .submission_id
265+
262266 @property
263267 def files (self ) -> dict [Path , SubmissionFileMetadata ]:
264268 """
@@ -312,14 +316,19 @@ def validate_files( # noqa: C901, PLR0912, PLR0915
312316 tasks = []
313317
314318 def should_check_file (file_path : Path , file_metadata : SubmissionFileMetadata ) -> bool :
315- # Check against both logs. If either is missing a "pass", re-check.
316319 checksum_state = checksum_progress_logger .get_state (file_path , file_metadata )
317320 seq_data_state = seq_data_progress_logger .get_state (file_path , file_metadata )
318321 is_seq_file = file_metadata .file_type in ("fastq" , "bam" )
319-
320- checksum_passed = checksum_state and checksum_state .get ("validation_passed" )
321- seq_data_passed = seq_data_state and seq_data_state .get ("validation_passed" )
322-
322+ checksum_passed = (
323+ checksum_state
324+ and checksum_state .get ("validation_passed" )
325+ and checksum_state .get ("submission_id" ) == self .submission_id
326+ )
327+ seq_data_passed = (
328+ seq_data_state
329+ and seq_data_state .get ("validation_passed" )
330+ and seq_data_state .get ("submission_id" ) == self .submission_id
331+ )
323332 if is_seq_file :
324333 return not (checksum_passed and seq_data_passed )
325334 return not checksum_passed
@@ -448,11 +457,15 @@ def _execute_task(task_type, paths, metas, kwargs, pbar):
448457 checksum_issues .append ("File not found for size check." )
449458
450459 checksum_passed = not checksum_issues
451- checksum_state = ValidationState (errors = checksum_issues , validation_passed = checksum_passed )
460+ checksum_state = ValidationState (
461+ errors = checksum_issues , validation_passed = checksum_passed , submission_id = self .submission_id
462+ )
452463 checksum_progress_logger .set_state (file_path , file_metadata , checksum_state )
453464
454465 if file_metadata .file_type in ("fastq" , "bam" ):
455- seq_data_state = ValidationState (errors = report .errors , validation_passed = report .is_valid )
466+ seq_data_state = ValidationState (
467+ errors = report .errors , validation_passed = report .is_valid , submission_id = self .submission_id
468+ )
456469 seq_data_progress_logger .set_state (file_path , file_metadata , seq_data_state )
457470
458471 if not no_mmap :
@@ -524,6 +537,7 @@ def encrypt(
524537 (logged_state is None )
525538 or not logged_state .get ("encryption_successful" , False )
526539 or not encrypted_file_path .is_file ()
540+ or logged_state .get ("submission_id" ) != self .submission_id
527541 ):
528542 self .__log .info (
529543 "Encrypting file: '%s' -> '%s'" ,
@@ -543,15 +557,17 @@ def encrypt(
543557 progress_logger .set_state (
544558 file_path ,
545559 file_metadata ,
546- state = EncryptionState (encryption_successful = True ),
560+ state = EncryptionState (encryption_successful = True , submission_id = self . submission_id ),
547561 )
548562 except Exception as e :
549563 self .__log .error ("Encryption failed for '%s'" , str (file_path ))
550564
551565 progress_logger .set_state (
552566 file_path ,
553567 file_metadata ,
554- state = EncryptionState (encryption_successful = False , errors = [str (e )]),
568+ state = EncryptionState (
569+ encryption_successful = False , errors = [str (e )], submission_id = self .submission_id
570+ ),
555571 )
556572
557573 raise e
@@ -704,6 +720,7 @@ def decrypt(
704720 if (
705721 (logged_state is None )
706722 or not logged_state .get ("decryption_successful" , False )
723+ or logged_state .get ("submission_id" ) != self .submission_id
707724 or not decrypted_file_path .is_file ()
708725 ):
709726 self .__log .info (
@@ -719,15 +736,17 @@ def decrypt(
719736 progress_logger .set_state (
720737 encrypted_file_path ,
721738 file_metadata ,
722- state = DecryptionState (decryption_successful = True ),
739+ state = DecryptionState (decryption_successful = True , submission_id = self . submission_id ),
723740 )
724741 except Exception as e :
725742 self .__log .error ("Decryption failed for '%s'" , str (encrypted_file_path ))
726743
727744 progress_logger .set_state (
728745 encrypted_file_path ,
729746 file_metadata ,
730- state = DecryptionState (decryption_successful = False , errors = [str (e )]),
747+ state = DecryptionState (
748+ decryption_successful = False , errors = [str (e )], submission_id = self .submission_id
749+ ),
731750 )
732751
733752 raise e
0 commit comments