From c5f5e4d549b3fdf5df4a0858fba972c0ca6f384f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fernando=20Henrique=20Inoc=C3=AAncio=20Borba=20Ferreira?= Date: Wed, 27 Mar 2024 18:43:04 -0700 Subject: [PATCH 1/5] Speed up process shutdown --- .../ActionResults/ResourceActionResult.cs | 12 ++++- .../FhirServiceUnavailableException.cs | 25 +++++++++++ .../Conformance/SystemConformanceProvider.cs | 11 ++++- .../Models/OperationOutcomeConstants.cs | 1 + .../Storage/Queues/CosmosQueueClient.cs | 45 ++++++++++++------- ...perationOutcomeExceptionFilterAttribute.cs | 4 ++ 6 files changed, 79 insertions(+), 19 deletions(-) create mode 100644 src/Microsoft.Health.Fhir.Core/Exceptions/FhirServiceUnavailableException.cs diff --git a/src/Microsoft.Health.Fhir.Api/Features/ActionResults/ResourceActionResult.cs b/src/Microsoft.Health.Fhir.Api/Features/ActionResults/ResourceActionResult.cs index bb193b7550..52b9509e5d 100644 --- a/src/Microsoft.Health.Fhir.Api/Features/ActionResults/ResourceActionResult.cs +++ b/src/Microsoft.Health.Fhir.Api/Features/ActionResults/ResourceActionResult.cs @@ -13,6 +13,7 @@ using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Primitives; using Microsoft.Health.Core.Features.Context; +using Microsoft.Health.Fhir.Core.Exceptions; using Microsoft.Health.Fhir.Core.Features.Context; using Microsoft.Health.Fhir.Core.Features.Persistence; @@ -56,7 +57,16 @@ public override async Task ExecuteResultAsync(ActionContext context) { EnsureArg.IsNotNull(context, nameof(context)); - var fhirContext = context.HttpContext.RequestServices.GetService>(); + RequestContextAccessor fhirContext = null; + + try + { + fhirContext = context.HttpContext.RequestServices.GetService>(); + } + catch (ObjectDisposedException ode) + { + throw new FhirServiceUnavailableException("Not able to create final result.", ode); + } HttpResponse response = context.HttpContext.Response; diff --git a/src/Microsoft.Health.Fhir.Core/Exceptions/FhirServiceUnavailableException.cs b/src/Microsoft.Health.Fhir.Core/Exceptions/FhirServiceUnavailableException.cs new file mode 100644 index 0000000000..f00ef17d4c --- /dev/null +++ b/src/Microsoft.Health.Fhir.Core/Exceptions/FhirServiceUnavailableException.cs @@ -0,0 +1,25 @@ +// ------------------------------------------------------------------------------------------------- +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License (MIT). See LICENSE in the repo root for license information. +// ------------------------------------------------------------------------------------------------- + +using System; +using EnsureThat; +using Microsoft.Health.Fhir.Core.Models; + +namespace Microsoft.Health.Fhir.Core.Exceptions +{ + public sealed class FhirServiceUnavailableException : FhirException + { + public FhirServiceUnavailableException(string message, Exception innerException = null) + : base(message, innerException) + { + EnsureArg.IsNotNullOrEmpty(message, nameof(message)); + + Issues.Add(new OperationOutcomeIssue( + OperationOutcomeConstants.IssueSeverity.Error, + OperationOutcomeConstants.IssueType.Transient, + message)); + } + } +} diff --git a/src/Microsoft.Health.Fhir.Core/Features/Conformance/SystemConformanceProvider.cs b/src/Microsoft.Health.Fhir.Core/Features/Conformance/SystemConformanceProvider.cs index bde00ec30e..f231fb7542 100644 --- a/src/Microsoft.Health.Fhir.Core/Features/Conformance/SystemConformanceProvider.cs +++ b/src/Microsoft.Health.Fhir.Core/Features/Conformance/SystemConformanceProvider.cs @@ -209,11 +209,12 @@ public async Task BackgroudLoop() Stopwatch sw = Stopwatch.StartNew(); for (int i = 0; i < _rebuildDelay; i++) { - await Task.Delay(TimeSpan.FromMinutes(1)); + await Task.Delay(TimeSpan.FromMinutes(1), _cancellationTokenSource.Token); if (_disposed) { _logger.LogError("SystemConformanceProvider is already disposed. SystemConformanceProvider's BackgroudLoop is completed."); + return; } if (_cancellationTokenSource.IsCancellationRequested) @@ -238,7 +239,7 @@ public async Task BackgroudLoop() _builder.SyncProfiles(); } - await (_metadataSemaphore?.WaitAsync(CancellationToken.None) ?? Task.CompletedTask); + await (_metadataSemaphore?.WaitAsync(_cancellationTokenSource.Token) ?? Task.CompletedTask); try { _metadata = null; @@ -266,6 +267,12 @@ public async ValueTask DisposeAsync() { _logger.LogInformation("SystemConformanceProvider: DisposeAsync invoked."); + if (_disposed) + { + _logger.LogInformation("SystemConformanceProvider: Instance is already disposed."); + return; + } + if (!_cancellationTokenSource.IsCancellationRequested) { await _cancellationTokenSource.CancelAsync(); diff --git a/src/Microsoft.Health.Fhir.Core/Models/OperationOutcomeConstants.cs b/src/Microsoft.Health.Fhir.Core/Models/OperationOutcomeConstants.cs index 2c83cc80b0..2dafee8800 100644 --- a/src/Microsoft.Health.Fhir.Core/Models/OperationOutcomeConstants.cs +++ b/src/Microsoft.Health.Fhir.Core/Models/OperationOutcomeConstants.cs @@ -33,6 +33,7 @@ public static class IssueType public const string Throttled = nameof(Throttled); public const string Timeout = nameof(Timeout); public const string TooCostly = nameof(TooCostly); + public const string Transient = nameof(Transient); } } } diff --git a/src/Microsoft.Health.Fhir.CosmosDb/Features/Storage/Queues/CosmosQueueClient.cs b/src/Microsoft.Health.Fhir.CosmosDb/Features/Storage/Queues/CosmosQueueClient.cs index 82ec650a76..e510fd9f12 100644 --- a/src/Microsoft.Health.Fhir.CosmosDb/Features/Storage/Queues/CosmosQueueClient.cs +++ b/src/Microsoft.Health.Fhir.CosmosDb/Features/Storage/Queues/CosmosQueueClient.cs @@ -17,6 +17,7 @@ using Microsoft.Health.Core; using Microsoft.Health.Core.Extensions; using Microsoft.Health.Extensions.DependencyInjection; +using Microsoft.Health.Fhir.Core.Exceptions; using Microsoft.Health.Fhir.Core.Extensions; using Microsoft.Health.Fhir.CosmosDb.Features.Queries; using Microsoft.Health.JobManagement; @@ -520,29 +521,41 @@ private static void CancelJobDefinition(JobDefinitionWrapper item) private async Task> ExecuteQueryAsync(QueryDefinition sqlQuerySpec, int? itemCount, byte queueType, CancellationToken cancellationToken) { - using IScoped container = _containerFactory.Invoke(); - - ICosmosQuery query = _queryFactory.Create( - container.Value, - new CosmosQueryContext( - sqlQuerySpec, - new QueryRequestOptions { PartitionKey = new PartitionKey(JobGroupWrapper.GetJobInfoPartitionKey(queueType)), MaxItemCount = itemCount })); + IScoped container = null; - var items = new List(); - FeedResponse response; + try + { + _containerFactory.Invoke(); + } + catch (ObjectDisposedException ode) + { + throw new FhirServiceUnavailableException("Not able to run a new query.", ode); + } - while (itemCount == null || items.Count < itemCount.Value) + using (container) { - response = await _retryPolicy.ExecuteAsync(async () => await query.ExecuteNextAsync(cancellationToken)); - items.AddRange(response); + ICosmosQuery query = _queryFactory.Create( + container.Value, + new CosmosQueryContext( + sqlQuerySpec, + new QueryRequestOptions { PartitionKey = new PartitionKey(JobGroupWrapper.GetJobInfoPartitionKey(queueType)), MaxItemCount = itemCount })); - if (string.IsNullOrEmpty(response.ContinuationToken)) + var items = new List(); + FeedResponse response; + + while (itemCount == null || items.Count < itemCount.Value) { - break; + response = await _retryPolicy.ExecuteAsync(async () => await query.ExecuteNextAsync(cancellationToken)); + items.AddRange(response); + + if (string.IsNullOrEmpty(response.ContinuationToken)) + { + break; + } } - } - return items; + return items; + } } private async Task SaveJobGroupAsync(JobGroupWrapper definition, CancellationToken cancellationToken, bool ignoreEtag = false) diff --git a/src/Microsoft.Health.Fhir.Shared.Api/Features/Filters/OperationOutcomeExceptionFilterAttribute.cs b/src/Microsoft.Health.Fhir.Shared.Api/Features/Filters/OperationOutcomeExceptionFilterAttribute.cs index 40a74d52f1..66cfd279e4 100644 --- a/src/Microsoft.Health.Fhir.Shared.Api/Features/Filters/OperationOutcomeExceptionFilterAttribute.cs +++ b/src/Microsoft.Health.Fhir.Shared.Api/Features/Filters/OperationOutcomeExceptionFilterAttribute.cs @@ -74,6 +74,10 @@ public override void OnActionExecuted(ActionExecutedContext context) switch (fhirException) { + case FhirServiceUnavailableException _: + operationOutcomeResult.StatusCode = HttpStatusCode.ServiceUnavailable; + break; + case UnauthorizedFhirActionException _: operationOutcomeResult.StatusCode = HttpStatusCode.Forbidden; break; From 84721322de46b4b1754ef88b3fe8a78e0d704f60 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fernando=20Henrique=20Inoc=C3=AAncio=20Borba=20Ferreira?= Date: Fri, 29 Mar 2024 16:28:03 -0700 Subject: [PATCH 2/5] New exception InstanceUnavailableException --- .../Features/ActionResults/ResourceActionResult.cs | 2 +- ...navailableException.cs => InstanceUnavailableException.cs} | 4 ++-- .../Features/Storage/Queues/CosmosQueueClient.cs | 4 ++-- .../Filters/OperationOutcomeExceptionFilterAttribute.cs | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) rename src/Microsoft.Health.Fhir.Core/Exceptions/{FhirServiceUnavailableException.cs => InstanceUnavailableException.cs} (83%) diff --git a/src/Microsoft.Health.Fhir.Api/Features/ActionResults/ResourceActionResult.cs b/src/Microsoft.Health.Fhir.Api/Features/ActionResults/ResourceActionResult.cs index 52b9509e5d..5fb14924d1 100644 --- a/src/Microsoft.Health.Fhir.Api/Features/ActionResults/ResourceActionResult.cs +++ b/src/Microsoft.Health.Fhir.Api/Features/ActionResults/ResourceActionResult.cs @@ -65,7 +65,7 @@ public override async Task ExecuteResultAsync(ActionContext context) } catch (ObjectDisposedException ode) { - throw new FhirServiceUnavailableException("Not able to create final result.", ode); + throw new InstanceUnavailableException("Not able to create final result.", ode); } HttpResponse response = context.HttpContext.Response; diff --git a/src/Microsoft.Health.Fhir.Core/Exceptions/FhirServiceUnavailableException.cs b/src/Microsoft.Health.Fhir.Core/Exceptions/InstanceUnavailableException.cs similarity index 83% rename from src/Microsoft.Health.Fhir.Core/Exceptions/FhirServiceUnavailableException.cs rename to src/Microsoft.Health.Fhir.Core/Exceptions/InstanceUnavailableException.cs index f00ef17d4c..ee88406d9e 100644 --- a/src/Microsoft.Health.Fhir.Core/Exceptions/FhirServiceUnavailableException.cs +++ b/src/Microsoft.Health.Fhir.Core/Exceptions/InstanceUnavailableException.cs @@ -9,9 +9,9 @@ namespace Microsoft.Health.Fhir.Core.Exceptions { - public sealed class FhirServiceUnavailableException : FhirException + public sealed class InstanceUnavailableException : FhirException { - public FhirServiceUnavailableException(string message, Exception innerException = null) + public InstanceUnavailableException(string message, Exception innerException = null) : base(message, innerException) { EnsureArg.IsNotNullOrEmpty(message, nameof(message)); diff --git a/src/Microsoft.Health.Fhir.CosmosDb/Features/Storage/Queues/CosmosQueueClient.cs b/src/Microsoft.Health.Fhir.CosmosDb/Features/Storage/Queues/CosmosQueueClient.cs index e510fd9f12..2184336817 100644 --- a/src/Microsoft.Health.Fhir.CosmosDb/Features/Storage/Queues/CosmosQueueClient.cs +++ b/src/Microsoft.Health.Fhir.CosmosDb/Features/Storage/Queues/CosmosQueueClient.cs @@ -525,11 +525,11 @@ private async Task> ExecuteQueryAsync(QueryDefini try { - _containerFactory.Invoke(); + container = _containerFactory.Invoke(); } catch (ObjectDisposedException ode) { - throw new FhirServiceUnavailableException("Not able to run a new query.", ode); + throw new InstanceUnavailableException("Not able to run a new query.", ode); } using (container) diff --git a/src/Microsoft.Health.Fhir.Shared.Api/Features/Filters/OperationOutcomeExceptionFilterAttribute.cs b/src/Microsoft.Health.Fhir.Shared.Api/Features/Filters/OperationOutcomeExceptionFilterAttribute.cs index 66cfd279e4..8e761a10ed 100644 --- a/src/Microsoft.Health.Fhir.Shared.Api/Features/Filters/OperationOutcomeExceptionFilterAttribute.cs +++ b/src/Microsoft.Health.Fhir.Shared.Api/Features/Filters/OperationOutcomeExceptionFilterAttribute.cs @@ -74,7 +74,7 @@ public override void OnActionExecuted(ActionExecutedContext context) switch (fhirException) { - case FhirServiceUnavailableException _: + case InstanceUnavailableException _: operationOutcomeResult.StatusCode = HttpStatusCode.ServiceUnavailable; break; From 5c266cd1d5bf332204bbc85064e8a930ff656d76 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fernando=20Henrique=20Inoc=C3=AAncio=20Borba=20Ferreira?= Date: Fri, 19 Apr 2024 17:29:47 -0700 Subject: [PATCH 3/5] Use new ServiceUnavailableException contrs --- Directory.Packages.props | 4 +-- .../ActionResults/ResourceActionResult.cs | 4 +-- .../InstanceUnavailableException.cs | 25 ------------------- .../Storage/Queues/CosmosQueueClient.cs | 4 +-- ...perationOutcomeExceptionFilterAttribute.cs | 4 --- 5 files changed, 5 insertions(+), 36 deletions(-) delete mode 100644 src/Microsoft.Health.Fhir.Core/Exceptions/InstanceUnavailableException.cs diff --git a/Directory.Packages.props b/Directory.Packages.props index 116096cd1a..744b9aad50 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -1,7 +1,7 @@ - 7.1.13 + 7.1.53 4.3.0 @@ -122,4 +122,4 @@ - \ No newline at end of file + diff --git a/src/Microsoft.Health.Fhir.Api/Features/ActionResults/ResourceActionResult.cs b/src/Microsoft.Health.Fhir.Api/Features/ActionResults/ResourceActionResult.cs index 5fb14924d1..cac5b4d8df 100644 --- a/src/Microsoft.Health.Fhir.Api/Features/ActionResults/ResourceActionResult.cs +++ b/src/Microsoft.Health.Fhir.Api/Features/ActionResults/ResourceActionResult.cs @@ -12,8 +12,8 @@ using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Primitives; +using Microsoft.Health.Abstractions.Exceptions; using Microsoft.Health.Core.Features.Context; -using Microsoft.Health.Fhir.Core.Exceptions; using Microsoft.Health.Fhir.Core.Features.Context; using Microsoft.Health.Fhir.Core.Features.Persistence; @@ -65,7 +65,7 @@ public override async Task ExecuteResultAsync(ActionContext context) } catch (ObjectDisposedException ode) { - throw new InstanceUnavailableException("Not able to create final result.", ode); + throw new ServiceUnavailableException("Not able to create final result. Retry the operation.", ode); } HttpResponse response = context.HttpContext.Response; diff --git a/src/Microsoft.Health.Fhir.Core/Exceptions/InstanceUnavailableException.cs b/src/Microsoft.Health.Fhir.Core/Exceptions/InstanceUnavailableException.cs deleted file mode 100644 index ee88406d9e..0000000000 --- a/src/Microsoft.Health.Fhir.Core/Exceptions/InstanceUnavailableException.cs +++ /dev/null @@ -1,25 +0,0 @@ -// ------------------------------------------------------------------------------------------------- -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License (MIT). See LICENSE in the repo root for license information. -// ------------------------------------------------------------------------------------------------- - -using System; -using EnsureThat; -using Microsoft.Health.Fhir.Core.Models; - -namespace Microsoft.Health.Fhir.Core.Exceptions -{ - public sealed class InstanceUnavailableException : FhirException - { - public InstanceUnavailableException(string message, Exception innerException = null) - : base(message, innerException) - { - EnsureArg.IsNotNullOrEmpty(message, nameof(message)); - - Issues.Add(new OperationOutcomeIssue( - OperationOutcomeConstants.IssueSeverity.Error, - OperationOutcomeConstants.IssueType.Transient, - message)); - } - } -} diff --git a/src/Microsoft.Health.Fhir.CosmosDb/Features/Storage/Queues/CosmosQueueClient.cs b/src/Microsoft.Health.Fhir.CosmosDb/Features/Storage/Queues/CosmosQueueClient.cs index 2184336817..923bcd31ce 100644 --- a/src/Microsoft.Health.Fhir.CosmosDb/Features/Storage/Queues/CosmosQueueClient.cs +++ b/src/Microsoft.Health.Fhir.CosmosDb/Features/Storage/Queues/CosmosQueueClient.cs @@ -7,7 +7,6 @@ using System.Collections.Generic; using System.Linq; using System.Net; -using System.Runtime; using System.Security.Cryptography; using System.Threading; using System.Threading.Tasks; @@ -17,7 +16,6 @@ using Microsoft.Health.Core; using Microsoft.Health.Core.Extensions; using Microsoft.Health.Extensions.DependencyInjection; -using Microsoft.Health.Fhir.Core.Exceptions; using Microsoft.Health.Fhir.Core.Extensions; using Microsoft.Health.Fhir.CosmosDb.Features.Queries; using Microsoft.Health.JobManagement; @@ -529,7 +527,7 @@ private async Task> ExecuteQueryAsync(QueryDefini } catch (ObjectDisposedException ode) { - throw new InstanceUnavailableException("Not able to run a new query.", ode); + throw new ServiceUnavailableException("Not able to run a new query. Retry the operation.", ode); } using (container) diff --git a/src/Microsoft.Health.Fhir.Shared.Api/Features/Filters/OperationOutcomeExceptionFilterAttribute.cs b/src/Microsoft.Health.Fhir.Shared.Api/Features/Filters/OperationOutcomeExceptionFilterAttribute.cs index 8e761a10ed..40a74d52f1 100644 --- a/src/Microsoft.Health.Fhir.Shared.Api/Features/Filters/OperationOutcomeExceptionFilterAttribute.cs +++ b/src/Microsoft.Health.Fhir.Shared.Api/Features/Filters/OperationOutcomeExceptionFilterAttribute.cs @@ -74,10 +74,6 @@ public override void OnActionExecuted(ActionExecutedContext context) switch (fhirException) { - case InstanceUnavailableException _: - operationOutcomeResult.StatusCode = HttpStatusCode.ServiceUnavailable; - break; - case UnauthorizedFhirActionException _: operationOutcomeResult.StatusCode = HttpStatusCode.Forbidden; break; From e25bd73c16f2bf9f7a2763ccf9a9f28122536c2e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fernando=20Henrique=20Inoc=C3=AAncio=20Borba=20Ferreira?= Date: Tue, 23 Apr 2024 15:11:57 -0700 Subject: [PATCH 4/5] Include error messages to resources. --- .../ActionResults/ResourceActionResult.cs | 2 +- .../Resources.Designer.cs | 9 +++ src/Microsoft.Health.Fhir.Api/Resources.resx | 5 +- .../Storage/Queues/CosmosQueueClient.cs | 2 +- .../Resources.Designer.cs | 9 +++ .../Resources.resx | 59 ++++++++++--------- 6 files changed, 55 insertions(+), 31 deletions(-) diff --git a/src/Microsoft.Health.Fhir.Api/Features/ActionResults/ResourceActionResult.cs b/src/Microsoft.Health.Fhir.Api/Features/ActionResults/ResourceActionResult.cs index cac5b4d8df..ae187d7557 100644 --- a/src/Microsoft.Health.Fhir.Api/Features/ActionResults/ResourceActionResult.cs +++ b/src/Microsoft.Health.Fhir.Api/Features/ActionResults/ResourceActionResult.cs @@ -65,7 +65,7 @@ public override async Task ExecuteResultAsync(ActionContext context) } catch (ObjectDisposedException ode) { - throw new ServiceUnavailableException("Not able to create final result. Retry the operation.", ode); + throw new ServiceUnavailableException(Resources.NotAbleToCreateTheFinalResultsOfAnOperation, ode); } HttpResponse response = context.HttpContext.Response; diff --git a/src/Microsoft.Health.Fhir.Api/Resources.Designer.cs b/src/Microsoft.Health.Fhir.Api/Resources.Designer.cs index 669a490d3d..e075cd83f5 100644 --- a/src/Microsoft.Health.Fhir.Api/Resources.Designer.cs +++ b/src/Microsoft.Health.Fhir.Api/Resources.Designer.cs @@ -537,6 +537,15 @@ public static string NoSoftPurge { } } + /// + /// Looks up a localized string similar to Not able to create final result. Retry the operation.. + /// + public static string NotAbleToCreateTheFinalResultsOfAnOperation { + get { + return ResourceManager.GetString("NotAbleToCreateTheFinalResultsOfAnOperation", resourceCulture); + } + } + /// /// Looks up a localized string similar to The requested route was not found.. /// diff --git a/src/Microsoft.Health.Fhir.Api/Resources.resx b/src/Microsoft.Health.Fhir.Api/Resources.resx index 16838bf404..47e69b7478 100644 --- a/src/Microsoft.Health.Fhir.Api/Resources.resx +++ b/src/Microsoft.Health.Fhir.Api/Resources.resx @@ -420,4 +420,7 @@ The export parameter "includeAssociatedData" contains an invalid value. Supported values are: {0}. - + + Not able to create final result. Retry the operation. + + \ No newline at end of file diff --git a/src/Microsoft.Health.Fhir.CosmosDb/Features/Storage/Queues/CosmosQueueClient.cs b/src/Microsoft.Health.Fhir.CosmosDb/Features/Storage/Queues/CosmosQueueClient.cs index 526701823a..c30d29041d 100644 --- a/src/Microsoft.Health.Fhir.CosmosDb/Features/Storage/Queues/CosmosQueueClient.cs +++ b/src/Microsoft.Health.Fhir.CosmosDb/Features/Storage/Queues/CosmosQueueClient.cs @@ -527,7 +527,7 @@ private async Task> ExecuteQueryAsync(QueryDefini } catch (ObjectDisposedException ode) { - throw new ServiceUnavailableException("Not able to run a new query. Retry the operation.", ode); + throw new ServiceUnavailableException(Resources.NotAbleToExecuteQuery, ode); } using (container) diff --git a/src/Microsoft.Health.Fhir.CosmosDb/Resources.Designer.cs b/src/Microsoft.Health.Fhir.CosmosDb/Resources.Designer.cs index f9e286a0df..2d2efdea74 100644 --- a/src/Microsoft.Health.Fhir.CosmosDb/Resources.Designer.cs +++ b/src/Microsoft.Health.Fhir.CosmosDb/Resources.Designer.cs @@ -204,6 +204,15 @@ internal static string KeyVaultWrapUnwrapFailure { } } + /// + /// Looks up a localized string similar to Not able to execute a query. Retry the operation.. + /// + internal static string NotAbleToExecuteQuery { + get { + return ResourceManager.GetString("NotAbleToExecuteQuery", resourceCulture); + } + } + /// /// Looks up a localized string similar to Unhandled {0} '{1}'.. /// diff --git a/src/Microsoft.Health.Fhir.CosmosDb/Resources.resx b/src/Microsoft.Health.Fhir.CosmosDb/Resources.resx index b57e12b377..c3a0475cf5 100644 --- a/src/Microsoft.Health.Fhir.CosmosDb/Resources.resx +++ b/src/Microsoft.Health.Fhir.CosmosDb/Resources.resx @@ -1,17 +1,17 @@  - @@ -171,4 +171,7 @@ Provided feed range is invalid and could not be parsed. - + + Not able to execute a query. Retry the operation. + + \ No newline at end of file From e23e52972b0ae3e3a95b3c097389064e3160e728 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fernando=20Henrique=20Inoc=C3=AAncio=20Borba=20Ferreira?= Date: Tue, 23 Apr 2024 15:32:08 -0700 Subject: [PATCH 5/5] Upgrade Azure Identity version --- Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Directory.Packages.props b/Directory.Packages.props index fbc2c4c041..4fe4448d51 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -32,7 +32,7 @@ - +