diff --git a/ena-submission/src/ena_deposition/create_assembly.py b/ena-submission/src/ena_deposition/create_assembly.py index 1ce38b18b3..9184b2d3aa 100644 --- a/ena-submission/src/ena_deposition/create_assembly.py +++ b/ena-submission/src/ena_deposition/create_assembly.py @@ -25,8 +25,8 @@ get_authors, get_description, get_ena_analysis_process, + retry_failed_submissions_for_matching_errors, set_accession_does_not_exist_error, - trigger_retry_if_exists, ) from .ena_types import ( DEFAULT_EMBL_PROPERTY_FIELDS, @@ -758,12 +758,18 @@ def assembly_table_handle_errors( ) messages.append(msg) - last_retry_time = trigger_retry_if_exists( + last_retry_time = retry_failed_submissions_for_matching_errors( entries_with_errors, db_config, table_name=TableName.ASSEMBLY_TABLE, retry_threshold_min=config.retry_threshold_min, last_retry=last_retry_time, + error_substrings=( + "Submit service authentication error. Invalid submission account user " + "name or password. Please try enclosing your password in single quotes. " + "The submission has failed because of a user error.:", + "does not exist in ENA", + ), ) # TODO: Query ENA to check if assembly has in fact been created # If created update assembly_table diff --git a/ena-submission/src/ena_deposition/create_project.py b/ena-submission/src/ena_deposition/create_project.py index 7c5a7e129b..f15db17ef2 100644 --- a/ena-submission/src/ena_deposition/create_project.py +++ b/ena-submission/src/ena_deposition/create_project.py @@ -15,8 +15,8 @@ accession_exists, create_ena_project, get_alias, + retry_failed_submissions_for_matching_errors, set_accession_does_not_exist_error, - trigger_retry_if_exists, ) from .ena_types import ( OrganismType, @@ -388,7 +388,7 @@ def project_table_handle_errors( time=datetime.now(tz=pytz.utc), slack_retry_threshold_min=config.slack_retry_threshold_min, ) - return trigger_retry_if_exists( + return retry_failed_submissions_for_matching_errors( entries_with_errors, db_config, table_name=TableName.PROJECT_TABLE, diff --git a/ena-submission/src/ena_deposition/create_sample.py b/ena-submission/src/ena_deposition/create_sample.py index 8c88c89ea2..e1cb3466a3 100644 --- a/ena-submission/src/ena_deposition/create_sample.py +++ b/ena-submission/src/ena_deposition/create_sample.py @@ -14,8 +14,8 @@ accession_exists, create_ena_sample, get_alias, + retry_failed_submissions_for_matching_errors, set_accession_does_not_exist_error, - trigger_retry_if_exists, ) from .ena_types import ( ProjectLink, @@ -422,7 +422,7 @@ def sample_table_handle_errors( time=datetime.now(tz=pytz.utc), slack_retry_threshold_min=config.slack_retry_threshold_min, ) - last_retry_time = trigger_retry_if_exists( + last_retry_time = retry_failed_submissions_for_matching_errors( entries_with_errors, db_config, table_name=TableName.SAMPLE_TABLE, diff --git a/ena-submission/src/ena_deposition/ena_submission_helper.py b/ena-submission/src/ena_deposition/ena_submission_helper.py index ae6c64b3a6..e0c4adb272 100644 --- a/ena-submission/src/ena_deposition/ena_submission_helper.py +++ b/ena-submission/src/ena_deposition/ena_submission_helper.py @@ -878,12 +878,12 @@ def set_accession_does_not_exist_error( logger.warning(f"{accession_type} creation failed and DB update failed.") -def trigger_retry_if_exists( +def retry_failed_submissions_for_matching_errors( entries_with_errors: Iterable[Mapping[str, Any]], db_config: SimpleConnectionPool, table_name: TableName, retry_threshold_min: int, - error_substring: str = "does not exist in ENA", + error_substrings: Iterable[str] = ("does not exist in ENA",), last_retry: datetime | None = None, ) -> datetime | None: if ( @@ -892,7 +892,8 @@ def trigger_retry_if_exists( ): return last_retry for entry in entries_with_errors: - if error_substring not in str(entry.get("errors", "")): + errors = str(entry.get("errors", "")) + if not any(substring in errors for substring in error_substrings): continue match table_name: case TableName.PROJECT_TABLE: