Severity
P3 - Medium (Minor functionality affected)
Describe the Bug with repro steps
I was glad to see the Http Status codes are now selectable when creating a retry policy but have the following feedback on the feature.
The UX is missing information and is misleading
It is not stated in the UX whether the selected "HTTP status codes" are instead of the standard set of 408, 429, and 5xx or are in addition to it.
It is left up to the user to experiment to find out for themselves.
The list of HTTP Status codes that you can select includes 408, 429 and all of the 5xx ones so my guess would be that this is instead of. This guess would be wrong.
I suggest the info tooltip be expanded to state this explicitly and additionally 408, 429 and all of the 5xx ones removed from the list (as selecting them will have no effect). I would also propose adding 499 to the list (thrown on stateless workflow timeout) as this is a use case I often want retried
When the custom status code is encountered the specified retry policy is ignored and it degrades to default exponential
I would expect the action below to retry 7 times not 4
"418_With_Custom_Status": {
"type": "Http",
"inputs": {
"uri": "https://httpbin.org/status/418",
"method": "GET",
"retryPolicy": {
"type": "exponential",
"count": 7,
"interval": "PT20S",
"minimumInterval": "PT5S",
"maximumInterval": "PT30S",
"httpStatusCodes": [
418
]
}
}
What type of Logic App Is this happening in?
Standard (Portal)
Are you experiencing a regression?
No response
Which operating system are you using?
Windows
Did you refer to the TSG before filing this issue? https://aka.ms/lauxtsg
Yes
Workflow JSON
{
"definition": {
"$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
"contentVersion": "1.0.0.0",
"actions": {
"418_No_Custom_Status": {
"type": "Http",
"inputs": {
"uri": "https://httpbin.org/status/418",
"method": "GET",
"retryPolicy": {
"type": "exponential",
"count": 7,
"interval": "PT20S",
"minimumInterval": "PT5S",
"maximumInterval": "PT30S"
}
},
"runAfter": {},
"runtimeConfiguration": {
"contentTransfer": {
"transferMode": "Chunked"
}
}
},
"418_With_Custom_Status": {
"type": "Http",
"inputs": {
"uri": "https://httpbin.org/status/418",
"method": "GET",
"retryPolicy": {
"type": "exponential",
"count": 7,
"interval": "PT20S",
"minimumInterval": "PT5S",
"maximumInterval": "PT30S",
"httpStatusCodes": [
418
]
}
},
"runAfter": {
"418_No_Custom_Status": [
"SUCCEEDED",
"TIMEDOUT",
"SKIPPED",
"FAILED"
]
},
"runtimeConfiguration": {
"contentTransfer": {
"transferMode": "Chunked"
}
}
},
"500_With_Custom_Status": {
"type": "Http",
"inputs": {
"uri": "https://httpbin.org/status/500",
"method": "GET",
"retryPolicy": {
"type": "exponential",
"count": 7,
"interval": "PT20S",
"minimumInterval": "PT5S",
"maximumInterval": "PT30S",
"httpStatusCodes": [
418
]
}
},
"runAfter": {
"418_With_Custom_Status": [
"SUCCEEDED",
"TIMEDOUT",
"SKIPPED",
"FAILED"
]
},
"runtimeConfiguration": {
"contentTransfer": {
"transferMode": "Chunked"
}
}
},
"500_No_Custom_Status": {
"type": "Http",
"inputs": {
"uri": "https://httpbin.org/status/500",
"method": "GET",
"retryPolicy": {
"type": "exponential",
"count": 7,
"interval": "PT20S",
"minimumInterval": "PT5S",
"maximumInterval": "PT30S"
}
},
"runAfter": {
"500_With_Custom_Status": [
"SUCCEEDED",
"TIMEDOUT",
"SKIPPED",
"FAILED"
]
},
"runtimeConfiguration": {
"contentTransfer": {
"transferMode": "Chunked"
}
}
}
},
"outputs": {},
"triggers": {
"When_an_HTTP_request_is_received": {
"type": "Request",
"kind": "Http"
}
}
},
"kind": "Stateful"
}
Screenshots or Videos
From the below if it encounters exclusively 418 responses it retries 4x, if it encounters exclusively 500 responses it retries 7x. I have no idea what it does if it encounters a mix of these.
Environment
N/A
Additional context
No response
Severity
P3 - Medium (Minor functionality affected)
Describe the Bug with repro steps
I was glad to see the Http Status codes are now selectable when creating a retry policy but have the following feedback on the feature.
The UX is missing information and is misleading
It is not stated in the UX whether the selected "HTTP status codes" are instead of the standard set of 408, 429, and 5xx or are in addition to it.
It is left up to the user to experiment to find out for themselves.
The list of HTTP Status codes that you can select includes 408, 429 and all of the 5xx ones so my guess would be that this is instead of. This guess would be wrong.
I suggest the info tooltip be expanded to state this explicitly and additionally 408, 429 and all of the 5xx ones removed from the list (as selecting them will have no effect). I would also propose adding 499 to the list (thrown on stateless workflow timeout) as this is a use case I often want retried
When the custom status code is encountered the specified retry policy is ignored and it degrades to default exponential
I would expect the action below to retry 7 times not 4
What type of Logic App Is this happening in?
Standard (Portal)
Are you experiencing a regression?
No response
Which operating system are you using?
Windows
Did you refer to the TSG before filing this issue? https://aka.ms/lauxtsg
Yes
Workflow JSON
{ "definition": { "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#", "contentVersion": "1.0.0.0", "actions": { "418_No_Custom_Status": { "type": "Http", "inputs": { "uri": "https://httpbin.org/status/418", "method": "GET", "retryPolicy": { "type": "exponential", "count": 7, "interval": "PT20S", "minimumInterval": "PT5S", "maximumInterval": "PT30S" } }, "runAfter": {}, "runtimeConfiguration": { "contentTransfer": { "transferMode": "Chunked" } } }, "418_With_Custom_Status": { "type": "Http", "inputs": { "uri": "https://httpbin.org/status/418", "method": "GET", "retryPolicy": { "type": "exponential", "count": 7, "interval": "PT20S", "minimumInterval": "PT5S", "maximumInterval": "PT30S", "httpStatusCodes": [ 418 ] } }, "runAfter": { "418_No_Custom_Status": [ "SUCCEEDED", "TIMEDOUT", "SKIPPED", "FAILED" ] }, "runtimeConfiguration": { "contentTransfer": { "transferMode": "Chunked" } } }, "500_With_Custom_Status": { "type": "Http", "inputs": { "uri": "https://httpbin.org/status/500", "method": "GET", "retryPolicy": { "type": "exponential", "count": 7, "interval": "PT20S", "minimumInterval": "PT5S", "maximumInterval": "PT30S", "httpStatusCodes": [ 418 ] } }, "runAfter": { "418_With_Custom_Status": [ "SUCCEEDED", "TIMEDOUT", "SKIPPED", "FAILED" ] }, "runtimeConfiguration": { "contentTransfer": { "transferMode": "Chunked" } } }, "500_No_Custom_Status": { "type": "Http", "inputs": { "uri": "https://httpbin.org/status/500", "method": "GET", "retryPolicy": { "type": "exponential", "count": 7, "interval": "PT20S", "minimumInterval": "PT5S", "maximumInterval": "PT30S" } }, "runAfter": { "500_With_Custom_Status": [ "SUCCEEDED", "TIMEDOUT", "SKIPPED", "FAILED" ] }, "runtimeConfiguration": { "contentTransfer": { "transferMode": "Chunked" } } } }, "outputs": {}, "triggers": { "When_an_HTTP_request_is_received": { "type": "Request", "kind": "Http" } } }, "kind": "Stateful" }Screenshots or Videos
From the below if it encounters exclusively 418 responses it retries 4x, if it encounters exclusively 500 responses it retries 7x. I have no idea what it does if it encounters a mix of these.
Environment
N/A
Additional context
No response