0

Azure logic app workflow RunTimeout setting is not working.

Links I followed,

Run duration setting

Host settings

Things I tried,

  1. Added Runtime.Backend.FlowRunTimeout setting in host settings to 30 seconds.
  2. Stopped, Restarted logic app
  3. Added delay for 1 minute in HTTP trigger logic app.
  4. It executed after waiting for a delay of 1 minute instead of timing out.
  5. Also tried increasing delay time and timeout duration, still no luck.
Vijay
  • 72
  • 12

2 Answers2

1

After reproducing from my end, I faced the same issue. However, to achieve your requirement, I tried to automate this using HTTP triggers in a logic app calling the required standard logic app along with its workflows and runs. I tried to cancel the run which are taking more time than the expected time. Below is the flow of my logic app.

enter image description here

code view of my logic app

{
    "definition": {
        "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
        "actions": {
            "For_each": {
                "actions": {
                    "For_each_1": {
                        "actions": {
                            "Condition": {
                                "actions": {
                                    "For_each_2": {
                                        "actions": {
                                            "HTTP_to_cancel_the_run_that_exceeding_the_limit": {
                                                "inputs": {
                                                    "headers": {
                                                        "Authorization": "<BEARER_TOKEN>"
                                                    },
                                                    "method": "POST",
                                                    "uri": "https://management.azure.com/subscriptions/<SUB_ID>/resourceGroups/<RG>/providers/Microsoft.Web/sites/la76307366/hostruntime/runtime/webhooks/workflow/api/management/@{item()?['id']}/cancel?api-version=2022-09-01"
                                                },
                                                "runtimeConfiguration": {
                                                    "contentTransfer": {
                                                        "transferMode": "Chunked"
                                                    }
                                                },
                                                "type": "Http"
                                            }
                                        },
                                        "foreach": "@outputs('Parse_JSON_to_get_individual_run')?['body']?['value']",
                                        "type": "foreach"
                                    }
                                },
                                "else": {
                                    "actions": {}
                                },
                                "expression": {
                                    "and": [
                                        {
                                            "equals": [
                                                "@item()?['properties']?['status']",
                                                "Running"
                                            ]
                                        }
                                    ]
                                },
                                "type": "If"
                            }
                        },
                        "foreach": "@outputs('Parse_JSON_to_get_individual_run')?['body']?['value']",
                        "runAfter": {
                            "Parse_JSON_to_get_individual_run": [
                                "SUCCEEDED"
                            ]
                        },
                        "type": "foreach"
                    },
                    "HTTP_to_get_workflow_runs": {
                        "inputs": {
                            "headers": {
                                "Authorization": "<BEARER_TOKEN>"
                            },
                            "method": "GET",
                            "uri": "https://management.azure.com/subscriptions/<SUB_ID>/resourceGroups/<RG>/providers/Microsoft.Web/sites/la76307366/hostruntime/runtime/webhooks/workflow/api/management/workflows/@{item()['name']}/runs?api-version=2022-09-01"
                        },
                        "runtimeConfiguration": {
                            "contentTransfer": {
                                "transferMode": "Chunked"
                            }
                        },
                        "type": "Http"
                    },
                    "Parse_JSON_to_get_individual_run": {
                        "inputs": {
                            "content": "@body('HTTP_to_get_workflow_runs')",
                            "schema": {
                                "properties": {
                                    "value": {
                                        "items": {
                                            "properties": {
                                                "id": {
                                                    "type": "string"
                                                },
                                                "name": {
                                                    "type": "string"
                                                },
                                                "properties": {
                                                    "properties": {
                                                        "correlation": {
                                                            "properties": {
                                                                "clientTrackingId": {
                                                                    "type": "string"
                                                                }
                                                            },
                                                            "type": "object"
                                                        },
                                                        "outputs": {
                                                            "properties": {},
                                                            "type": "object"
                                                        },
                                                        "startTime": {
                                                            "type": "string"
                                                        },
                                                        "status": {
                                                            "type": "string"
                                                        },
                                                        "trigger": {
                                                            "properties": {
                                                                "correlation": {
                                                                    "properties": {
                                                                        "clientTrackingId": {
                                                                            "type": "string"
                                                                        }
                                                                    },
                                                                    "type": "object"
                                                                },
                                                                "endTime": {
                                                                    "type": "string"
                                                                },
                                                                "name": {
                                                                    "type": "string"
                                                                },
                                                                "originHistoryName": {
                                                                    "type": "string"
                                                                },
                                                                "outputsLink": {
                                                                    "properties": {
                                                                        "contentSize": {
                                                                            "type": "integer"
                                                                        },
                                                                        "uri": {
                                                                            "type": "string"
                                                                        }
                                                                    },
                                                                    "type": "object"
                                                                },
                                                                "startTime": {
                                                                    "type": "string"
                                                                },
                                                                "status": {
                                                                    "type": "string"
                                                                }
                                                            },
                                                            "type": "object"
                                                        },
                                                        "waitEndTime": {
                                                            "type": "string"
                                                        },
                                                        "workflow": {
                                                            "properties": {
                                                                "id": {
                                                                    "type": "string"
                                                                },
                                                                "name": {
                                                                    "type": "string"
                                                                },
                                                                "type": {
                                                                    "type": "string"
                                                                }
                                                            },
                                                            "type": "object"
                                                        }
                                                    },
                                                    "type": "object"
                                                },
                                                "type": {
                                                    "type": "string"
                                                }
                                            },
                                            "required": [
                                                "properties",
                                                "id",
                                                "name",
                                                "type"
                                            ],
                                            "type": "object"
                                        },
                                        "type": "array"
                                    }
                                },
                                "type": "object"
                            }
                        },
                        "runAfter": {
                            "HTTP_to_get_workflow_runs": [
                                "SUCCEEDED"
                            ]
                        },
                        "type": "ParseJson"
                    }
                },
                "foreach": "@outputs('Parse_JSON')['body']",
                "runAfter": {
                    "Parse_JSON": [
                        "SUCCEEDED"
                    ]
                },
                "type": "foreach"
            },
            "HTTP": {
                "inputs": {
                    "headers": {
                        "Authorization": "<BEARER_TOKEN>"
                    },
                    "method": "GET",
                    "uri": "https://management.azure.com/subscriptions/<SUB_ID>/resourceGroups/<RG>/providers/Microsoft.Web/sites/la76307366/hostruntime/runtime/webhooks/workflow/api/management/workflows?api-version=2022-09-01"
                },
                "runAfter": {},
                "runtimeConfiguration": {
                    "contentTransfer": {
                        "transferMode": "Chunked"
                    }
                },
                "type": "Http"
            },
            "Parse_JSON": {
                "inputs": {
                    "content": "@body('HTTP')",
                    "schema": {
                        "items": {
                            "properties": {
                                "definition_href": {
                                    "type": "string"
                                },
                                "health": {
                                    "properties": {
                                        "state": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                },
                                "href": {
                                    "type": "string"
                                },
                                "isDisabled": {
                                    "type": "boolean"
                                },
                                "kind": {
                                    "type": "string"
                                },
                                "name": {
                                    "type": "string"
                                },
                                "triggers": {
                                    "properties": {
                                        "When_a_HTTP_request_is_received": {
                                            "properties": {
                                                "kind": {
                                                    "type": "string"
                                                },
                                                "type": {
                                                    "type": "string"
                                                }
                                            },
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            },
                            "required": [
                                "name",
                                "definition_href",
                                "href",
                                "kind",
                                "triggers",
                                "isDisabled",
                                "health"
                            ],
                            "type": "object"
                        },
                        "type": "array"
                    }
                },
                "runAfter": {
                    "HTTP": [
                        "SUCCEEDED"
                    ]
                },
                "type": "ParseJson"
            }
        },
        "contentVersion": "1.0.0.0",
        "outputs": {},
        "triggers": {
            "When_a_HTTP_request_is_received": {
                "kind": "Http",
                "type": "Request"
            }
        }
    },
    "kind": "Stateful"
}
SwethaKandikonda
  • 7,513
  • 2
  • 4
  • 18
  • This workaround might work to cancel the runs. In our case, we have multiple logic apps with lot of workflows. We have a configuration setting as per documentation but it is not having any impact which is weird. Its better if we can define timeout at config level for each logic app or at least at each workflow level. Otherwise we need to define something like this and have a recurrence trigger to scan all logic app workflows periodically to cancel longer running ones. – Vijay Jun 05 '23 at 14:17
  • @Vijay Just an FYI, The above provided answer works for all the workflows present in a standard logic app. – SwethaKandikonda Jun 06 '23 at 03:45
0

After following up with Microsoft team, the minimum value which can be set for "Runtime.Backend.FlowRunTimeout" is 7 days.

Here is the Github issue ref - RunTimeout Issue

Also merged a PR to update this in their doc so less people suffer on this later. This minimum value will be updated here in a few days - Microsoft Doc

Vijay
  • 72
  • 12