@@ -402,6 +402,7 @@ private static bool ShouldRetryInner(HttpMessage message, Exception? exception)
402402 ( message , exception ) switch
403403 {
404404 ( { Response . Status : 422 or 409 } , _) when HasManagementApiRequestFailedError ( message . Response ) => true ,
405+ ( { Response . Status : 409 } , _) when HasConflictError ( message . Response ) && HasOperationOnTheApiIsInProgressMessage ( message . Response ) => true ,
405406 ( { Response . Status : 412 } , _) => true ,
406407 ( { Response . Status : 429 } , _) => true ,
407408 _ => false
@@ -418,6 +419,16 @@ private static bool HasManagementApiRequestFailedError(Response response) =>
418419 . Where ( code => code . Equals ( "ManagementApiRequestFailed" , StringComparison . OrdinalIgnoreCase ) )
419420 . IsSome ;
420421
422+ private static bool HasConflictError ( Response response ) =>
423+ TryGetErrorCode ( response )
424+ . Where ( code => code . Equals ( "Conflict" , StringComparison . OrdinalIgnoreCase ) )
425+ . IsSome ;
426+
427+ private static bool HasOperationOnTheApiIsInProgressMessage ( Response response ) =>
428+ TryGetMessage ( response )
429+ . Where ( code => code . Equals ( "Operation on the API is in progress" , StringComparison . OrdinalIgnoreCase ) )
430+ . IsSome ;
431+
421432 private static Option < string > TryGetErrorCode ( Response response )
422433 {
423434 try
@@ -433,6 +444,22 @@ private static Option<string> TryGetErrorCode(Response response)
433444 return Option < string > . None ;
434445 }
435446 }
447+
448+ private static Option < string > TryGetMessage ( Response response )
449+ {
450+ try
451+ {
452+ return response . Content
453+ . ToObjectFromJson < JsonObject > ( )
454+ . TryGetJsonObjectProperty ( "error" )
455+ . Bind ( error => error . TryGetStringProperty ( "message" ) )
456+ . ToOption ( ) ;
457+ }
458+ catch ( Exception exception ) when ( exception is ArgumentNullException or NotSupportedException or JsonException )
459+ {
460+ return Option < string > . None ;
461+ }
462+ }
436463}
437464
438465public class TelemetryPolicy ( Version version ) : HttpPipelinePolicy
0 commit comments