Skip to content

mrebuffet/GraphSdkRetryHandler

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GraphSdkRetryHandler

Showcasing an issue with the RetryHandler not retrying for Http Status 504 (GatewayTimeout). Using Fiddler or an equivalent product, block the request after response and edit it to return a 504 instead. Example:

HTTP/1.1 504 Gateway Timeout
Date: Fri, 25 Jan 2019 16:49:29 GMT
FiddlerTemplate: True
Content-Type: text/html
Content-Length: 172

Fiddler: HTTP/504 gateway timeout.

OR

StatusCode: 504, ReasonPhrase: 'Gateway Timeout', Version: 1.1, Content: System.Net.Http.StreamContent, Headers:
{
  Transfer-Encoding: chunked
  request-id: 4e7b6099-8697-4acd-ab01-919e409666d9
  client-request-id: 4e7b6099-8697-4acd-ab01-919e409666d9
  x-ms-ags-diagnostic: {"ServerInfo":{"DataCenter":"North Central US","Slice":"SliceC","Ring":"3","ScaleUnit":"003","RoleInstance":"AGSFE_IN_13","ADSiteName":"NCU"}}
  Duration: 10680.543
  Strict-Transport-Security: max-age=31536000
  Cache-Control: private
  Date: Thu, 05 Sep 2019 17:37:27 GMT
  Content-Type: application/json
}

The Retry handler will fail to retry and throw an exception saying that the request content has been disposed. RetryHandler.cs --> SendRetryAsync -->

// general clone request with internal CloneAsync (see CloneAsync for details) extension method 
var request = await response.RequestMessage.CloneAsync();

seems to be the cause of this exception when debugging the SDK.

If we bypass this method and retry manually, we can eventually reach the HttpProvider --> SendAsync --> SendRequestAsync --> httpClient.SendAsync() but we always get a TaskCanceledException which is eventually converted to ServiceException with code timeout. This behaviour has been introduced in version 1.16. Using the version 1.14 of the SDK, the request was retried but since the version 1.15 it would systematically throw a TaskCanceledException.

How to debug this solution

Please replace the Graph Token with a valid one in the Resource file before debugging the Solution.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages