Skip to content

Instantly share code, notes, and snippets.

@scottfrazer
Last active April 20, 2016 18:18
Show Gist options
  • Save scottfrazer/e1ef234cb4e026856df8d68a1e30deae to your computer and use it in GitHub Desktop.
Save scottfrazer/e1ef234cb4e026856df8d68a1e30deae to your computer and use it in GitHub Desktop.

Formerly WorkflowBackendActorFactory, the new interface is BackendLifecycleActorFactory:

trait BackendLifecycleActorFactory {
  def getWorkflowInitializationActorProps(...): Option[Props] = ???
  def getJobExecutionActorProps(...): Props = ???
  def getWorkflowFinalizationActorProps(...): Option[Props] = ???
}

Each backend implements one of these, and it's referenced in the config file:

{
  name = "Local"
  class = "cromwell.engine.backend.local.LocalBackend" // old-style
  shadow-class = "cromwell.backend.impl.local.LocalBackendLifecycleActorFactory" // new-style
  config {
    ...
  }
}

There are three lifecycle actors

  • WorkflowInitializationActor currently has method override def backendActor(backendName: String, callAssignments: Seq[Call]): Option[ActorRef]

BackendConfiguration - loads configuration file and creates a Seq[BackendConfigurationEntry]

  • Needs to be aware of shadow-class

CromwellBackend - contains initBackends method which takes a Seq[BackendConfigurationEntry] and sets a global Map[String, Backend]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment