Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Sometimes tasks don't run as expected, as and we need want to get notification when they are latethis is the case.
For this we use the late attribute.
A node can only have one late attribute. The late attribute can be add to a suite/family however and only applies to a task. You can define it on a Suite/Family in which case it will be inherited by the task.Note: only a task can be late. Any late defined lower down the hierarchy will override the aspect(submitted,active, complete) defined higher up.
  • -s submitted: The time node can stay submitted (format [+]hh:mm). submitted is always relative, so + is simple ignored, if present. If the node stays submitted longer than the time specified, the late flag is set
  • -a Active   : The time of day the node must have become active (format hh:mm). If the node is still queued or submitted, the late flag is set
  • -c Complete : The time node must become complete (format {+}hh:mm). If relative, time is taken from the time the node became active, otherwise node must be complete by the time given.
   

Ecf Script

We will add a new task /test/f6/t1.
Create new ecf script file $HOME/course/test/f6/t1.ecf to use these variables.

 

Code Block
languagebash
%include <head.h>
sleep %SLEEP%
%include <tail.h>

 

Text

Let us modify the suite definition file again

Code Block
# Definition of the suite test.
suite test
 edit ECF_INCLUDE "$HOME/course"
 edit ECF_HOME    "$HOME/course"

 family f6
     edit SLEEP 120
      late -c +00:01 # warn if task take longer than a minute
     endfamily
 endfamily
endsuite

 

Python

#!/usr/bin/env python2.7
import os
import ecflow  
    
def create_family_f6():
    f6 = ecflow.Family("f6")
    f6.add_variable("SLEEP", 120)
    t1 = f6.add_task("t1")


late = ecflow.Late()

        late.complete(ecflow.TimeSlot(0,1),True)

        t1.add_late(late)

       t1.add_late( ecflow.RepeatDate("DATE", 20101230, 20110105) )
    return f6
    
print "Creating suite definition"   
defs = ecflow.Defs()
suite = defs.add_suite("test")
suite.add_variable("ECF_INCLUDE", os.path.join(os.getenv("HOME"),  "course"))
suite.add_variable("ECF_HOME",    os.path.join(os.getenv("HOME"),  "course"))

suite.add_family( create_family_f6() )
print defs

print "Checking job creation: .ecf -> .job0"   
print defs.check_job_creation()

print "Saving definition to file 'test.def'"
defs.save_as_defs("test.def")

What to do

  1. Type in the changes
  2. Replace the suite definition
  3. How many times will /test/f4/f5/t1 run?
  4. In ecflow_ui , try to modify the values of a repeat
      
    Run the suite, you should see the task late flag set in ecflow_ui

 

Button Group

Button Hyperlink
titlePrevious
typestandard
urlhttps://software.ecmwf.int/wiki/display/ECFLOW/Labels
Button Hyperlink
titleUp
typestandard
urlhttps://software.ecmwf.int/wiki/display/ECFLOW/Advanced+Topics
Button Hyperlink
titleNext
typestandard
urlhttps://software.ecmwf.int/wiki/display/ECFLOW/Limits