ecFlow's documentation is now on readthedocs!

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 11 Next »

When zombie s arise they can be handled manually by ecflowview. (See Zombie) or via the command line interface:

  • ecflow_client –zombie_get
  • ecflow_client –zombie_fail <task-path>
  • ecflow_client –zombie_fob <task-path>
  • ecflow_client –zombie_adopt <task-path>
  • ecflow_client –zombie_remove <task-path>
  • ecflow_client –zombie_block <task-path>

However it is also possible to ask ecflow_server to make the same response in an automated fashion. How ever very careful consideration should be made before doing this. Otherwise it could mask a serious underlying problem.

The automated response can be defined with:

  • python interface( See ecflow.ZombieAttr)

  • text interface ( See Definition file Grammar)

    zombie             ::=  "zombie" >> zombie_type >> ":" >> *child >> ":" >> !(client_side_action | server_side_action) >> ":" >> !zombie_life_time
    zombie_type        ::=  "user" | "ecf" | "path"
    child              ::=  "init" | "event" | "meter" | "label" | "wait" | "abort" | "complete"
    client_side_action ::=  "fob" | "fail" | "block"
    server_side_action ::=  "adopt" | "delete"
    zombie_life_time   ::=  unsigned integer  ( default:  user(300), ecf(3600), path(900)  )

The zombie attribute is inherited in the same manner as Variable inheritance.

Example: For tasks under suite “s1” add a zombie attribute, such that child label commands(i.e ecflow_client –label) never block:

  • python

    s1 = ecflow.Suite('s1')
    child_list = [ ChildCmdType.label ]
    zombie_attr = ZombieAttr(ZombieType.ecf, child_list, ZombieUserActionType.fob, 300)
    s1.add_zombie(zombie_attr)
    
  • text

    suite s1
       zombie ecf:label:fob:

Example: For tasks under suite “s1” add a zombie attribute, such that child commands( event, meter, label) never block:

  • python

    s1 = ecflow.Suite('s1')
    child_list = [ ChildCmdType.label, ChildCmdType.event, ChildCmdType.meter ]
    zombie_attr = ZombieAttr(ZombieType.ecf, child_list, ZombieUserActionType.fob, 300)
    s1.add_zombie(zombie_attr)
    
  • text

    suite s1
       zombie ecf:label,event,meter:fob:

Example: For all tasks under family “critical”, if any zombies arise then fail the job:

  • python

    with ecflow.Suite('s1') as s1:
       with s1.add_family("critical") as crit :
          child_list = [ ]  # empty child list means apply to all child commands
          crit.add_zombie(ZombieAttr(ZombieType.ecf, child_list, ZombieUserActionType.fail, 300))
          crit.add_zombie(ZombieAttr(ZombieType.path, child_list, ZombieUserActionType.fail, 300))
          crit.add_zombie(ZombieAttr(ZombieType.user, child_list, ZombieUserActionType.fail, 300))
    
  • text

    suite s1
       family critical
          zombie ecf::fail:
          zombie path::fail:
          zombie user::fail:
  • No labels