From ef075eeaa4fd3e884f59f2529f9b47577bc9d27a Mon Sep 17 00:00:00 2001 From: Nalu Tripician <27316859+NaluTripician@users.noreply.github.com> Date: Fri, 2 Aug 2024 10:07:59 -0700 Subject: [PATCH] removed exclude region from hedging diagnostics --- .../src/Handler/RequestInvokerHandler.cs | 15 ++++--- ...gionParallelHedgingAvailabilityStrategy.cs | 2 +- .../CosmosAvailabilityStrategyTests.cs | 44 ++----------------- 3 files changed, 13 insertions(+), 48 deletions(-) diff --git a/Microsoft.Azure.Cosmos/src/Handler/RequestInvokerHandler.cs b/Microsoft.Azure.Cosmos/src/Handler/RequestInvokerHandler.cs index 60e10152b9..939cbd369a 100644 --- a/Microsoft.Azure.Cosmos/src/Handler/RequestInvokerHandler.cs +++ b/Microsoft.Azure.Cosmos/src/Handler/RequestInvokerHandler.cs @@ -90,6 +90,13 @@ public override async Task SendAsync( cancellationToken); } + if (request.RequestOptions?.ExcludeRegions != null) + { + ResponseMessage response = await this.BaseSendAsync(request, cancellationToken); + ((CosmosTraceDiagnostics)response.Diagnostics).Value.AddOrUpdateDatum("ExcludedRegions", request.RequestOptions.ExcludeRegions); + return response; + } + return await this.BaseSendAsync(request, cancellationToken); } @@ -109,13 +116,7 @@ public virtual async Task BaseSendAsync( RequestMessage request, CancellationToken cancellationToken) { - ResponseMessage response = await base.SendAsync(request, cancellationToken); - if (request.RequestOptions?.ExcludeRegions != null) - { - ((CosmosTraceDiagnostics)response.Diagnostics).Value.AddOrUpdateDatum("ExcludedRegions", request.RequestOptions.ExcludeRegions); - } - - return response; + return await base.SendAsync(request, cancellationToken); } public virtual async Task SendAsync( diff --git a/Microsoft.Azure.Cosmos/src/Routing/AvailabilityStrategy/CrossRegionParallelHedgingAvailabilityStrategy.cs b/Microsoft.Azure.Cosmos/src/Routing/AvailabilityStrategy/CrossRegionParallelHedgingAvailabilityStrategy.cs index 696251d0d8..10f8052857 100644 --- a/Microsoft.Azure.Cosmos/src/Routing/AvailabilityStrategy/CrossRegionParallelHedgingAvailabilityStrategy.cs +++ b/Microsoft.Azure.Cosmos/src/Routing/AvailabilityStrategy/CrossRegionParallelHedgingAvailabilityStrategy.cs @@ -110,7 +110,7 @@ public override async Task ExecuteAvailabilityStrategyAsync( using (CancellationTokenSource cancellationTokenSource = CancellationTokenSource.CreateLinkedTokenSource(cancellationToken)) { using (CloneableStream clonedBody = (CloneableStream)(request.Content == null - ? null//new CloneableStream(new MemoryStream()) + ? null : await StreamExtension.AsClonableStreamAsync(request.Content))) { IReadOnlyCollection hedgeRegions = client.DocumentClient.GlobalEndpointManager diff --git a/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.EmulatorTests/CosmosAvailabilityStrategyTests.cs b/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.EmulatorTests/CosmosAvailabilityStrategyTests.cs index 97bf5af234..64ad968d86 100644 --- a/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.EmulatorTests/CosmosAvailabilityStrategyTests.cs +++ b/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.EmulatorTests/CosmosAvailabilityStrategyTests.cs @@ -273,10 +273,6 @@ public async Task AvailabilityStrategyRequestOptionsTriggerTest() traceDiagnostic.Value.Data.TryGetValue("Hedge Context", out object hedgeContext); Assert.IsNotNull(hedgeContext); Assert.AreEqual("Hedged Request", (string)hedgeContext); - traceDiagnostic.Value.Data.TryGetValue("ExcludedRegions", out object excludeRegionsObject); - Assert.IsNotNull(excludeRegionsObject); - List excludeRegionsList = excludeRegionsObject as List; - Assert.IsTrue(excludeRegionsList.Contains("Central US")); faultInjectionClient.Dispose(); } @@ -334,7 +330,6 @@ public async Task AvailabilityStrategyDisableOverideTest() CosmosTraceDiagnostics traceDiagnostic = ir.Diagnostics as CosmosTraceDiagnostics; Assert.IsNotNull(traceDiagnostic); - Assert.IsFalse(traceDiagnostic.Value.Data.TryGetValue("ExcludedRegions", out _)); faultInjectionClient.Dispose(); } @@ -422,7 +417,7 @@ public async Task AvailabilityStrategyAllFaultsTests(string operation, string co CosmosTraceDiagnostics traceDiagnostic; object hedgeContext; - List excludeRegionsList; + switch (operation) { case "Read": @@ -438,9 +433,6 @@ public async Task AvailabilityStrategyAllFaultsTests(string operation, string co traceDiagnostic.Value.Data.TryGetValue("Hedge Context", out hedgeContext); Assert.IsNotNull(hedgeContext); Assert.AreEqual("Hedged Request", (string)hedgeContext); - traceDiagnostic.Value.Data.TryGetValue("ExcludedRegions", out object excludeRegionsObject); - excludeRegionsList = excludeRegionsObject as List; - Assert.IsTrue(excludeRegionsList.Contains("Central US")); break; @@ -468,9 +460,6 @@ public async Task AvailabilityStrategyAllFaultsTests(string operation, string co traceDiagnostic.Value.Data.TryGetValue("Hedge Context", out hedgeContext); Assert.IsNotNull(hedgeContext); Assert.AreEqual("Hedged Request", (string)hedgeContext); - traceDiagnostic.Value.Data.TryGetValue("ExcludedRegions", out object excludeRegionsQueryObject); - excludeRegionsList = excludeRegionsQueryObject as List; - Assert.IsTrue(excludeRegionsList.Contains("Central US")); } break; @@ -492,9 +481,6 @@ public async Task AvailabilityStrategyAllFaultsTests(string operation, string co traceDiagnostic.Value.Data.TryGetValue("Hedge Context", out hedgeContext); Assert.IsNotNull(hedgeContext); Assert.AreEqual("Hedged Request", (string)hedgeContext); - traceDiagnostic.Value.Data.TryGetValue("ExcludedRegions", out object excludeRegionsQueryObject); - excludeRegionsList = excludeRegionsQueryObject as List; - Assert.IsTrue(excludeRegionsList.Contains("Central US")); } break; @@ -517,9 +503,6 @@ public async Task AvailabilityStrategyAllFaultsTests(string operation, string co traceDiagnostic.Value.Data.TryGetValue("Hedge Context", out hedgeContext); Assert.IsNotNull(hedgeContext); Assert.AreEqual("Hedged Request", (string)hedgeContext); - traceDiagnostic.Value.Data.TryGetValue("ExcludedRegions", out object excludeRegionsReadManyObject); - excludeRegionsList = excludeRegionsReadManyObject as List; - Assert.IsTrue(excludeRegionsList.Contains("Central US")); break; @@ -612,7 +595,7 @@ public async Task AvailabilityStrategyStepTests(string operation, string condito CosmosTraceDiagnostics traceDiagnostic; object hedgeContext; - List excludeRegionsList; + switch (operation) { case "Read": @@ -628,10 +611,6 @@ public async Task AvailabilityStrategyStepTests(string operation, string condito traceDiagnostic.Value.Data.TryGetValue("Hedge Context", out hedgeContext); Assert.IsNotNull(hedgeContext); Assert.AreEqual("Hedged Request", (string)hedgeContext); - traceDiagnostic.Value.Data.TryGetValue("ExcludedRegions", out object excludeRegionsObject); - excludeRegionsList = excludeRegionsObject as List; - Assert.IsTrue(excludeRegionsList.Contains("Central US")); - Assert.IsTrue(excludeRegionsList.Contains("North Central US")); break; @@ -659,9 +638,6 @@ public async Task AvailabilityStrategyStepTests(string operation, string condito traceDiagnostic.Value.Data.TryGetValue("Hedge Context", out hedgeContext); Assert.IsNotNull(hedgeContext); Assert.AreEqual("Hedged Request", (string)hedgeContext); - traceDiagnostic.Value.Data.TryGetValue("ExcludedRegions", out object excludeRegionsQueryObject); - excludeRegionsList = excludeRegionsQueryObject as List; - Assert.IsTrue(excludeRegionsList.Contains("Central US")); } break; @@ -683,9 +659,6 @@ public async Task AvailabilityStrategyStepTests(string operation, string condito traceDiagnostic.Value.Data.TryGetValue("Hedge Context", out hedgeContext); Assert.IsNotNull(hedgeContext); Assert.AreEqual("Hedged Request", (string)hedgeContext); - traceDiagnostic.Value.Data.TryGetValue("ExcludedRegions", out object excludeRegionsQueryObject); - excludeRegionsList = excludeRegionsQueryObject as List; - Assert.IsTrue(excludeRegionsList.Contains("Central US")); } break; @@ -708,10 +681,6 @@ public async Task AvailabilityStrategyStepTests(string operation, string condito traceDiagnostic.Value.Data.TryGetValue("Hedge Context", out hedgeContext); Assert.IsNotNull(hedgeContext); Assert.AreEqual("Hedged Request", (string)hedgeContext); - traceDiagnostic.Value.Data.TryGetValue("ExcludedRegions", out object excludeRegionsReadManyObject); - excludeRegionsList = excludeRegionsReadManyObject as List; - Assert.IsTrue(excludeRegionsList.Contains("Central US")); - Assert.IsTrue(excludeRegionsList.Contains("North Central US")); break; @@ -810,9 +779,7 @@ private static async Task HandleChangesAsync( traceDiagnostic.Value.Data.TryGetValue("Hedge Context", out object hedgeContext); Assert.IsNotNull(hedgeContext); Assert.AreEqual("Hedged Request", (string)hedgeContext); - traceDiagnostic.Value.Data.TryGetValue("ExcludedRegions", out object excludeRegionsObject); - List excludeRegionsList = excludeRegionsObject as List; - Assert.IsTrue(excludeRegionsList.Contains("Central US")); + await Task.Delay(1); } @@ -831,10 +798,7 @@ private static async Task HandleChangesStepAsync( traceDiagnostic.Value.Data.TryGetValue("Hedge Context", out object hedgeContext); Assert.IsNotNull(hedgeContext); Assert.AreEqual("Hedged Request", (string)hedgeContext); - traceDiagnostic.Value.Data.TryGetValue("ExcludedRegions", out object excludeRegionsObject); - List excludeRegionsList = excludeRegionsObject as List; - Assert.IsTrue(excludeRegionsList.Contains("Central US")); - Assert.IsTrue(excludeRegionsList.Contains("North Central US")); + await Task.Delay(1); }