# Retry from a previous task

**URL:** <https://cylc.discourse.group/t/retry-from-a-previous-task/730>\
**Category:** Cylc Support\
**Created:** [August 22, 2023, 3:17pm UTC](https://cylc.discourse.group/t/retry-from-a-previous-task/730 "2023-08-22T15:17:39Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![prajeeshag](https://yyz2.discourse-cdn.com/free1/user_avatar/cylc.discourse.group/prajeeshag/32/212_2.png) [@prajeeshag](https://cylc.discourse.group/u/prajeeshag)\
**Post date:** [August 22, 2023, 3:17pm UTC](https://cylc.discourse.group/t/retry-from-a-previous-task/730/1 "2023-08-22T15:17:39Z")

</div>

Hi,

How can I do the following? i.e if task2 fails retry starting from task1

P1D = “”"  
task3[-P1D] =\> task1 =\> task2? =\> task3  
task2:fail? =\> task1  
“”"  
any ideas to achieve this would be appreciated.

Thanks

---

<div class="post-metadata">

**Author:** ![hilary.j.oliver](https://yyz2.discourse-cdn.com/free1/user_avatar/cylc.discourse.group/hilary.j.oliver/32/4_2.png) [@hilary.j.oliver](https://cylc.discourse.group/u/hilary.j.oliver)\
**Post date:** [August 23, 2023, 2:54am UTC](https://cylc.discourse.group/t/retry-from-a-previous-task/730/2 "2023-08-23T02:54:43Z")

</div>

You can trigger a new flow to “rewind” the workflow to task1.

In the following example, task2 will fail and rewind the workflow twice, before succeeding and carrying on with task3:

```ini
[scheduling]
    [[graph]]
        R1 = """
            task1 => task2? => task3
            task2:fail? => rewinder
        """
[runtime]
    [[root]]
        pre-script = sleep 2
    [[task1]]
    [[task2]]
        script = """
            if (( CYLC_TASK_SUBMIT_NUMBER < 3 )); then
                false
            fi
        """
    [[rewinder]]
        script = """
           cylc trigger --flow=new ${CYLC_WORKFLOW_ID}//1/task1
        """
    [[task3]]

```

Result, after running it:

```console
$ cylc log pra | grep -E '(succeeded|failed)'
INFO - [1/task1 running job:01 flows:1] => succeeded
INFO - [1/task2 running job:01 flows:1] => failed
INFO - [1/rewinder running job:01 flows:1] => succeeded
INFO - [1/task1 running job:02 flows:2] => succeeded
INFO - [1/task2 running job:02 flows:2] => failed
INFO - [1/rewinder running job:02 flows:2] => succeeded
INFO - [1/task1 running job:03 flows:3] => succeeded
INFO - [1/task2 running job:03 flows:3] => succeeded
INFO - [1/task3 running job:01 flows:3] => succeeded

```

---

<div class="post-metadata">

**Author:** ![prajeeshag](https://yyz2.discourse-cdn.com/free1/user_avatar/cylc.discourse.group/prajeeshag/32/212_2.png) [@prajeeshag](https://cylc.discourse.group/u/prajeeshag)\
**Post date:** [August 23, 2023, 8:56am UTC](https://cylc.discourse.group/t/retry-from-a-previous-task/730/3 "2023-08-23T08:56:39Z")

</div>

Thanks, Oliver. Much appreciated.
