From cd1dfa04e35c9211368aadb39111a8377ee416b7 Mon Sep 17 00:00:00 2001 From: qqmyers Date: Wed, 20 Jan 2021 13:47:48 -0500 Subject: [PATCH 1/3] Don't call Finalize if pre-pub workflow exists --- .../engine/command/impl/PublishDatasetCommand.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/java/edu/harvard/iq/dataverse/engine/command/impl/PublishDatasetCommand.java b/src/main/java/edu/harvard/iq/dataverse/engine/command/impl/PublishDatasetCommand.java index 66f0838de23..88bfe832cd4 100644 --- a/src/main/java/edu/harvard/iq/dataverse/engine/command/impl/PublishDatasetCommand.java +++ b/src/main/java/edu/harvard/iq/dataverse/engine/command/impl/PublishDatasetCommand.java @@ -213,7 +213,11 @@ public boolean onSuccess(CommandContext ctxt, Object r) { if (dataset != null) { logger.fine("From onSuccess, calling FinalizeDatasetPublicationCommand for dataset " + dataset.getGlobalId().asString()); - ctxt.datasets().callFinalizePublishCommandAsynchronously(dataset.getId(), ctxt, request, datasetExternallyReleased); + Optional prePubWf = ctxt.workflows().getDefaultWorkflow(TriggerType.PrePublishDataset); + //A pre-publication workflow will call this when it completes + if (! prePubWf.isPresent() ) { + ctxt.datasets().callFinalizePublishCommandAsynchronously(dataset.getId(), ctxt, request, datasetExternallyReleased); + } return true; } From 6edf1ea502c75685f3ea1db8df7d4c50b1818692 Mon Sep 17 00:00:00 2001 From: qqmyers Date: Thu, 21 Jan 2021 13:51:07 -0500 Subject: [PATCH 2/3] keep invocationId when refreshing --- .../iq/dataverse/workflow/WorkflowServiceBean.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/main/java/edu/harvard/iq/dataverse/workflow/WorkflowServiceBean.java b/src/main/java/edu/harvard/iq/dataverse/workflow/WorkflowServiceBean.java index 5795556b9d8..0df3ec011b3 100644 --- a/src/main/java/edu/harvard/iq/dataverse/workflow/WorkflowServiceBean.java +++ b/src/main/java/edu/harvard/iq/dataverse/workflow/WorkflowServiceBean.java @@ -429,9 +429,12 @@ private WorkflowContext refresh( WorkflowContext ctxt, Map setti * resumed workflows. (The overall method is needed to allow the context to be updated in the start() method with the * settings and APItoken retrieved by the WorkflowServiceBean) - JM - 9/18. */ - return new WorkflowContext( ctxt.getRequest(), - em.merge(ctxt.getDataset()), ctxt.getNextVersionNumber(), - ctxt.getNextMinorVersionNumber(), ctxt.getType(), settings, apiToken, ctxt.getDatasetExternallyReleased()); + String id = ctxt.getInvocationId(); + WorkflowContext newCtxt =new WorkflowContext( ctxt.getRequest(), + em.merge(ctxt.getDataset()), ctxt.getNextVersionNumber(), + ctxt.getNextMinorVersionNumber(), ctxt.getType(), settings, apiToken, ctxt.getDatasetExternallyReleased()); + newCtxt.setInvocationId(id); + return newCtxt; } } From e5f7fb8bc825f147afea922bf10ab4219ba07c39 Mon Sep 17 00:00:00 2001 From: qqmyers Date: Thu, 21 Jan 2021 14:11:18 -0500 Subject: [PATCH 3/3] move logging statement to correct place --- .../engine/command/impl/PublishDatasetCommand.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/edu/harvard/iq/dataverse/engine/command/impl/PublishDatasetCommand.java b/src/main/java/edu/harvard/iq/dataverse/engine/command/impl/PublishDatasetCommand.java index 88bfe832cd4..15485b0097e 100644 --- a/src/main/java/edu/harvard/iq/dataverse/engine/command/impl/PublishDatasetCommand.java +++ b/src/main/java/edu/harvard/iq/dataverse/engine/command/impl/PublishDatasetCommand.java @@ -212,12 +212,12 @@ public boolean onSuccess(CommandContext ctxt, Object r) { } if (dataset != null) { - logger.fine("From onSuccess, calling FinalizeDatasetPublicationCommand for dataset " + dataset.getGlobalId().asString()); Optional prePubWf = ctxt.workflows().getDefaultWorkflow(TriggerType.PrePublishDataset); - //A pre-publication workflow will call this when it completes + //A pre-publication workflow will call FinalizeDatasetPublicationCommand itself when it completes if (! prePubWf.isPresent() ) { + logger.fine("From onSuccess, calling FinalizeDatasetPublicationCommand for dataset " + dataset.getGlobalId().asString()); ctxt.datasets().callFinalizePublishCommandAsynchronously(dataset.getId(), ctxt, request, datasetExternallyReleased); - } + } return true; }