beforeUpdate not canceld // odd error handling

As soon as a prompt (non-blocking) is involved in beforeUpdate, Update is not canceld anymore. Makes no difference if the prompt is on the workflow execution path or on any other conditional path which does not get triggered at all.

Workflow works but does not cancel update:

This works:

Workflow works but does not cancel update:

This works:
will_work

Seems like it should work, but does not cancel Update:

Not like it should be, but this kills Corteza - Container needs restart due to cycling

Log:

{“level”:“debug”,“ts”:1622548538.2573993,“logger”:“workflow.session.exec”,“caller”:“wfexec/session.go:401”,“msg”:“checking for delayed states”,“workflowID”:232149464125538374,“sessionID”:233739152837836971}
{“level”:“debug”,“ts”:1622548538.2695527,“logger”:“workflow.session.exec”,“caller”:“wfexec/session.go:401”,“msg”:“checking for delayed states”,“workflowID”:233176708985913361,“sessionID”:233736197128585387}
{“level”:“debug”,“ts”:1622548538.290734,“logger”:“workflow.session.exec”,“caller”:“wfexec/session.go:401”,“msg”:“checking for delayed states”,“workflowID”:232149464125538374,“sessionID”:233739578207371435}
{“level”:“debug”,“ts”:1622548538.3018718,“logger”:“workflow.session.exec”,“caller”:“wfexec/session.go:401”,“msg”:“checking for delayed states”,“workflowID”:232149464125538374,“sessionID”:233738957047726251}
{“level”:“debug”,“ts”:1622548538.3180282,“logger”:“workflow.session.exec”,“caller”:“wfexec/session.go:401”,“msg”:“checking for delayed states”,“workflowID”:232149464125538374,“sessionID”:233737121217642667}
{“level”:“debug”,“ts”:1622548538.3191316,“logger”:“workflow.session.exec”,“caller”:“wfexec/session.go:401”,“msg”:“checking for delayed states”,“workflowID”:232149464125538374,“sessionID”:233738588804612267}
{“level”:“debug”,“ts”:1622548538.3212862,“logger”:“workflow.session.exec”,“caller”:“wfexec/session.go:401”,“msg”:“checking for delayed states”,“workflowID”:232149464125538374,“sessionID”:233737202603917483}
{“level”:“debug”,“ts”:1622548538.330424,“logger”:“workflow.session.exec”,“caller”:“wfexec/session.go:401”,“msg”:“checking for delayed states”,“workflowID”:232149464125538374,“sessionID”:233736702642880683}
{“level”:“debug”,“ts”:1622548538.3485777,“logger”:“workflow.session.exec”,“caller”:“wfexec/session.go:401”,“msg”:“checking for delayed states”,“workflowID”:232149464125538374,“sessionID”:233739629042335915}
{“level”:“debug”,“ts”:1622548538.3547301,“logger”:“workflow.session.exec”,“caller”:“wfexec/session.go:401”,“msg”:“checking for delayed states”,“workflowID”:232149464125538374,“sessionID”:233735908292034731}
{“level”:“debug”,“ts”:1622548538.3588943,“logger”:“workflow.session.exec”,“caller”:“wfexec/session.go:401”,“msg”:“checking for delayed states”,“workflowID”:232149464125538374,“sessionID”:233737639700725931}
^C{“level”:“debug”,“ts”:1622548538.366046,“logger”:“workflow.session.exec”,“caller”:“wfexec/session.go:401”,“msg”:“checking for delayed states”,“workflowID”:232149464125538374,“sessionID”:233739005382885547}
{“level”:“debug”,“ts”:1622548538.36607,“logger”:“workflow.session.exec”,“caller”:“wfexec/session.go:401”,“msg”:“checking for delayed states”,“workflowID”:233010674425397251,“sessionID”:233736324383768747}
{“level”:“debug”,“ts”:1622548538.371204,“logger”:“workflow.session.exec”,“caller”:“wfexec/session.go:401”,“msg”:“checking for delayed states”,“workflowID”:232149464125538374,“sessionID”:233738456365269163}
{“level”:“debug”,“ts”:1622548538.3814118,“logger”:“workflow.session.exec”,“caller”:“wfexec/session.go:401”,“msg”:“checking for delayed states”,“workflowID”:233010674425397251,“sessionID”:233736249339281579}
{“level”:“debug”,“ts”:1622548538.3937016,“logger”:“workflow.session.exec”,“caller”:“wfexec/session.go:401”,“msg”:“checking for delayed states”,“workflowID”:232149464125538374,“sessionID”:233736534988161195}
{“level”:“debug”,“ts”:1622548538.3947978,“logger”:“workflow.session.exec”,“caller”:“wfexec/session.go:401”,“msg”:“checking for delayed states”,“workflowID”:232149464125538374,“sessionID”:233737258505601195}
{“level”:“debug”,“ts”:1622548538.4029489,“logger”:“workflow.session.exec”,“caller”:“wfexec/session.go:401”,“msg”:“checking for delayed states”,“workflowID”:232149464125538374,“sessionID”:233737772324618411}
{“level”:“debug”,“ts”:1622548538.4111063,“logger”:“workflow.session.exec”,“caller”:“wfexec/session.go:401”,“msg”:“checking for delayed states”,“workflowID”:232149464125538374,“sessionID”:233737725365190827}
{“level”:“debug”,“ts”:1622548538.4362693,“logger”:“workflow.session.exec”,“caller”:“wfexec/session.go:401”,“msg”:“checking for delayed states”,“workflowID”:232149464125538374,“sessionID”:233739589766873259}
{“level”:“debug”,“ts”:1622548538.4424071,“logger”:“workflow.session.exec”,“caller”:“wfexec/session.go:401”,“msg”:“checking for delayed states”,“workflowID”:232149464125538374,“sessionID”:233738945119125675}
{“level”:“debug”,“ts”:1622548538.446559,“logger”:“workflow.session.exec”,“caller”:“wfexec/session.go:401”,“msg”:“checking for delayed states”,“workflowID”:232149464125538374,“sessionID”:233736324517986475}
{“level”:“debug”,“ts”:1622548538.4607134,“logger”:“workflow.session.exec”,“caller”:“wfexec/session.go:401”,“msg”:“checking for delayed states”,“workflowID”:232149464125538374,“sessionID”:233736249473499307}
{“level”:“debug”,“ts”:1622548538.489899,“logger”:“workflow.session.exec”,“caller”:“wfexec/session.go:401”,“msg”:“checking for delayed states”,“workflowID”:232149464125538374,“sessionID”:233738611739066539}
{“level”:“debug”,“ts”:1622548538.5051012,“logger”:“workflow.session.exec”,“caller”:“wfexec/session.go:401”,“msg”:“checking for delayed states”,“workflowID”:232149464125538374,“sessionID”:233738656651673771}
{“level”:“debug”,“ts”:1622548538.5072896,“logger”:“workflow.session.exec”,“caller”:“wfexec/session.go:401”,“msg”:“checking for delayed states”,“workflowID”:232149464125538374,“sessionID”:233739152837836971}
{“level”:“debug”,“ts”:1622548538.5194693,“logger”:“workflow.session.exec”,“caller”:“wfexec/session.go:401”,“msg”:“checking for delayed states”,“workflowID”:233176708985913361,“sessionID”:233736197128585387}
{“level”:“debug”,“ts”:1622548538.540642,“logger”:“workflow.session.exec”,“caller”:“wfexec/session.go:401”,“msg”:“checking for delayed states”,“workflowID”:232149464125538374,“sessionID”:233739578207371435}
{“level”:“debug”,“ts”:1622548538.551797,“logger”:“workflow.session.exec”,“caller”:“wfexec/session.go:401”,“msg”:“checking for delayed states”,“workflowID”:232149464125538374,“sessionID”:233738957047726251}

@tnissen please remind me on what version you’re currently using; some similar cycling bug was recently patched with 2021.3.5.

When a workflow uses any “deferred” steps (any prompt, delay), the workflow is no longer able to affect the operation (cancel/change record create/update in your case). This may change in the future, but for now, it will remain as such.

@tjerman : Seems you are right - i forgot to switch back after testing. So in 2021.3.5 it works without killing corteza.

But why is a workflow affected if the path which is run through does not have a deffered action?
Something like this should work, cause the prompt is not on the execution path:

Mainly for consistency and us having to know whether the workflow is deferred or not before the system runs it. It would be painful to debug workflows where some branches can perform specific operations but some can not due to them deferring execution.

An idea comes to mind for workflows where you might cancel the update, but notify when the update goes through: Define two triggers; the first one is before an update that may cancel the operation, the second one is after an update that prompts the user.

As I’ve said, we will look into the options to remove this limitation, but for now, it will remain as is.