Execution of downstream components when upstream component fails

Issue #46 new
Ville Rantanen created an issue

Create folder "foo" and make sure "foo2" does NOT exist. First run this script successfully:

import anduril.tools._
import anduril.builtin._
import org.anduril.runtime._
object failWithChange {
  val fails=INPUT("foo")
  //~ val fails=INPUT("foo2")

  val failsArray=Folder2Array(fails)
  val consumes_input=QuickBash(in=fails, script="echo foo > $out")

  val secondary_consumer=QuickBash(in=consumes_input, script="echo script that changed > $out")
  //~ val secondary_consumer=QuickBash(in=consumes_input, script="echo script that changed to this > $out")

  for ((k,v)<-iterArray(failsArray)) {}
}

Then lets make two changes: The "fails" instance gets a failing value "foo2", AND instance "secondary_consumer" simply has a change in the parameters:

import anduril.tools._
import anduril.builtin._
import org.anduril.runtime._
object failWithChange {
  //~ val fails=INPUT("foo")
  val fails=INPUT("foo2")

  val failsArray=Folder2Array(fails)
  val consumes_input=QuickBash(in=fails, script="echo foo > $out")

  //~ val secondary_consumer=QuickBash(in=consumes_input, script="echo script that changed > $out")
  val secondary_consumer=QuickBash(in=consumes_input, script="echo script that changed to this > $out")

  for ((k,v)<-iterArray(failsArray)) {}
}

Here, "fails" fails as it should, but engine restarts because of iterArray, and the downstream components are run (all of them)

Comments (0)

  1. Log in to comment