From de700ad40c8749c22412580d813e0f759ebbeb86 Mon Sep 17 00:00:00 2001 From: Jeremy Prevost Date: Wed, 1 May 2024 09:31:47 -0400 Subject: [PATCH] Allow manually republishing thesis in `Pending publication` status We had a small batch of theses not end up in the SQS queue as expected. This small change should allow us to republish each one (one at a time) to see if we can better track down what happened (i.e. if one errors, we can assume something about it is causing this problem. If they all succeed, it was something external to an individual thesis). This does not solve the root problem, it just allows us to more efficiently retry publication on individual theses when this app thinks they are in a publishing queue but they are not. --- README.md | 4 +++- lib/tasks/dss.rake | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 11979fbc..beae3a1b 100644 --- a/README.md +++ b/README.md @@ -383,13 +383,15 @@ Note the `-s` option on the second command, which sets the dyno size for the run ### Publishing a single thesis -You can publish a single thesis that is already in `Publication review` status by passing the `thesis_id` to a rake +You can publish a single thesis that is already in `Publication review` or `Pending publication` status by passing the `thesis_id` to a rake task: ```shell heroku run -s standard-2x rails dss:publish_thesis_by_id[THESIS_ID] --app TARGET-HEROKU-APP ``` +Note: `Pending publication` is allowed here, but not expected to be a normal occurence, to handle the edge case of the app thinking data was sent to SQS but the data not arriving for any reason. + ## Preservation workflow The publishing workflow will automatically trigger preservation for all of the published theses in the results queue. diff --git a/lib/tasks/dss.rake b/lib/tasks/dss.rake index eb06af62..882d9890 100644 --- a/lib/tasks/dss.rake +++ b/lib/tasks/dss.rake @@ -11,7 +11,9 @@ namespace :dss do thesis = Thesis.find(args.thesis_id) # Our publication job expects to be only sent theses that are ready to be published so we need to check here - if thesis.publication_status == 'Publication review' + # `Publication review` is the normal status for theses entering this process, but we also allow + # `Pending publication` to allow us to bump jobs that didn't make it to the SQS queue for any reason. + if ['Publication review', 'Pending publication'].include?(thesis.publication_status) DspacePublicationJob.perform_now(thesis) else Rails.logger.info("Thesis status of #{thesis.publication_status} is not publishable.")