Skip to content

Commit e53c542

Browse files
committed
Stack traces are now provided for errors originating from workflow methods.
Workflow launcher will also set the status to 'failed' when launching scheduled workflows. Former-commit-id: c2857ce
1 parent 517e71c commit e53c542

File tree

3 files changed

+26
-6
lines changed

3 files changed

+26
-6
lines changed

seqware-pipeline/src/main/java/io/seqware/WorkflowRuns.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@
44
import net.sourceforge.seqware.common.metadata.MetadataFactory;
55
import net.sourceforge.seqware.common.model.WorkflowRun;
66
import net.sourceforge.seqware.common.model.WorkflowRunStatus;
7+
import static net.sourceforge.seqware.common.model.WorkflowRunStatus.pending;
8+
import static net.sourceforge.seqware.common.model.WorkflowRunStatus.running;
9+
import static net.sourceforge.seqware.common.model.WorkflowRunStatus.submitted;
710
import net.sourceforge.seqware.common.util.configtools.ConfigTools;
811

912
public class WorkflowRuns {
@@ -25,6 +28,13 @@ public static void submitCancel(int workflowRunAccession) {
2528
+ wr.getWorkflowEngine());
2629
}
2730
}
31+
32+
public static void failWorkflow(int workflowRunAccession) {
33+
Metadata md = MetadataFactory.get(ConfigTools.getSettings());
34+
WorkflowRun wr = md.getWorkflowRun(workflowRunAccession);
35+
wr.setStatus(WorkflowRunStatus.failed);
36+
md.updateWorkflowRun(wr);
37+
}
2838

2939
public static void submitRetry(int workflowRunAccession) {
3040
Metadata md = MetadataFactory.get(ConfigTools.getSettings());

seqware-pipeline/src/main/java/net/sourceforge/seqware/pipeline/plugin/WorkflowPlugin.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
*/
1212
package net.sourceforge.seqware.pipeline.plugin;
1313

14+
import io.seqware.WorkflowRuns;
1415
import java.util.ArrayList;
1516
import java.util.Arrays;
1617
import java.util.Collections;
@@ -521,7 +522,10 @@ public static ReturnValue launchNewWorkflow(OptionSet options, Map<String, Strin
521522
workflowEngine = dataModel.getWorkflow_engine();
522523
}
523524
} catch (Exception e) {
524-
Log.fatal(e, e);
525+
if (workflowRunAccession != null){
526+
Log.fatal("Exception constructing data model, failing workflow " + workflowRunAccession, e);
527+
WorkflowRuns.failWorkflow(workflowRunAccession);
528+
}
525529
ret.setExitStatus(ReturnValue.INVALIDARGUMENT);
526530
return ret;
527531
}

seqware-pipeline/src/main/java/net/sourceforge/seqware/pipeline/workflowV2/WorkflowDataModelFactory.java

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import net.sourceforge.seqware.common.model.WorkflowRun;
1919
import net.sourceforge.seqware.common.module.ReturnValue;
2020
import net.sourceforge.seqware.common.util.Log;
21+
import net.sourceforge.seqware.common.util.Rethrow;
2122
import net.sourceforge.seqware.common.util.maptools.MapTools;
2223
import net.sourceforge.seqware.common.util.workflowtools.WorkflowInfo;
2324
import net.sourceforge.seqware.pipeline.bundle.Bundle;
@@ -247,15 +248,20 @@ public AbstractWorkflowDataModel getWorkflowDataModel(Integer workflowAccession,
247248
m = clazz.getMethod("buildWorkflow");
248249
m.invoke(dataModel);
249250
} catch (SecurityException e) {
250-
Log.error(e);
251+
Log.error("SecurityException",e);
252+
Rethrow.rethrow(e);
251253
} catch (NoSuchMethodException e) {
252-
Log.error(e);
254+
Log.error("NoSuchMethodException",e);
255+
Rethrow.rethrow(e);
253256
} catch (IllegalArgumentException e) {
254-
Log.error(e);
257+
Log.error("IllegalArgumentException",e);
258+
Rethrow.rethrow(e);
255259
} catch (IllegalAccessException e) {
256-
Log.error(e);
260+
Log.error("IllegalAccessException",e);
261+
Rethrow.rethrow(e);
257262
} catch (InvocationTargetException e) {
258-
Log.error(e);
263+
Log.error("InvocationTargetException",e);
264+
Rethrow.rethrow(e);
259265
}
260266
} else {
261267
WorkflowXmlParser xmlParser = new WorkflowXmlParser();

0 commit comments

Comments
 (0)