Extending a workflow

hey there,

i have successfully run a 1 month coupled atmosphere-ocean-sea ice model with cylc 8 (yay!) and want to extend it. I’ve changed the RUNLEN variable in the rose-suite.conf file and run cylc reload u-cu431 and…

cylc play u-cu431 --start-cycle-point=19781001T0000Z

… but i get this error…

2023-04-04T03:40:57Z ERROR - Workflow shutting down - InputError: option --startcp is not valid for restart

is this the right way of going about it from a conceptual point of view?

in cylc 7 i would have just done rose suite-run --restart after changing the RUNLEN.

thanks!

ps - i looked through the docs but couldn’t work it out! :smile:

:tada:

For others reading this, note RUNLEN is not a Cylc thing, so we might need to know what it does in the context of this workflow.

Note cylc reload tells an already-running scheduler to reload a changed flow.cylc, which you have presumably reinstalled from the source directory (with cylc reinstall or cylc vr - validate + reinstall).

cylc play starts a scheduler for a workflow that is not currently running. If the workflow has never run before, it will start it from scratch (the beginning of the graph). If it had run before, it will restart from where it got to before.

Did the scheduler shut down as finished prior to this, or did you tell it to shut down before it finished?

If it shut down as finished, it will just shut down as finished again if you try to restart it. (However, you can pause it on start-up and trigger a new flow in it, if you want).

thanks for this.

good point re RUNLEN, it’s the standard variable name for the total run length of a climate model, e.g. 85 years from 2015-2100.

the workflow was set to run for 1 month (i.e. RUNLEN=1 month) and then stopped as expected (see screenshot) and i now want to continue the run from where it got to and continue the run.

Did the scheduler shut down as finished prior to this, or did you tell it to shut down before it finished?

it shut down correctly after running for 1 month.

… you can pause it on start-up and trigger a new flow in it, if you want

this sounds like what i want! :smile:

i tried this and it didn’t work, that is, the output is printed as below but the run doesn’t restart or anything…

cylc reinstall u-cu431/run1
cylc play u-cu431/run1

2023-04-04T21:37:28Z INFO - Extracting job.sh to /scale_wlg_persistent/filesets/home/williamsjh/cylc-run/u-cu431/run1/.service/etc/job.sh
u-cu431/run1: w-clim01.maui.niwa.co.nz PID=2622

in case it’s of interest, this is an extremely common and important workflow requirement for climate modelling which is why i’m trying to make this query detailed for future reference! :smiley:

1 Like

Correction/expansion:


$ cylc vr --help         
Usage: cylc validate-reinstall [OPTIONS] WORKFLOW        
                                                                             
Validate, reinstall and apply changes to a workflow.              
                                                           
Validate and reinstall a workflow then either:    
                                                
* "Reload" the workflow (if it is running),     
* or "play" it (if it is stopped).       

This command is equivalent to:        
  $ cylc validate myworkflow --against-source              
  $ cylc reinstall myworkflow                          
  # if myworkflow is running:                               
  $ cylc reload myworkflow         
  # else:                                    
  $ cylc play myworkflow           
                 
Note:                            
  "cylc validate --against-source" checks the code in the workflow source               
  directory against any options (e.g. template variables) which have been set  
  in the installed workflow to ensure the change can be safely applied.     
...

Absolutely.

At the moment (but, see below ) if you cylc play an already-finished workflow the scheduler will detect that it already finished and just shut down immediately, with no time for you to tell it to pause before shutdown. So if you want to trigger more action, you have to tell it to pause straight off via the play command line:

cylc play --pause

we have several developments in the works already to make this kind of thing easier, e.g. (soon) if you restart a finished workflow, the scheduler will stall on a timeout to allow time for intervention, rather than shutting down immediately

1 Like

ah ok i see, got it. i hadn’t tried cylc play --pause so will give that a go next time i need to do something similar.

thanks