Skip to content

Commit

Permalink
Direct: Adds 3.23.1 version (#2818)
Browse files Browse the repository at this point in the history
Diagnostics: Adds retry after time to diagnostics
Diagnostics: Fixes memory calculations in diagnostics
Availability: Fixes the SDK to ensure it does not retry on replica that previously failed
Availability: Direct mode removes blocking call on broken connection exception
  • Loading branch information
j82w committed Oct 26, 2021
1 parent 243023c commit 40075eb
Show file tree
Hide file tree
Showing 9 changed files with 28 additions and 17 deletions.
2 changes: 1 addition & 1 deletion Directory.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<ClientOfficialVersion>3.22.0</ClientOfficialVersion>
<ClientPreviewVersion>3.22.1</ClientPreviewVersion>
<ClientPreviewSuffixVersion>preview</ClientPreviewSuffixVersion>
<DirectVersion>3.22.0</DirectVersion>
<DirectVersion>3.23.1</DirectVersion>
<EncryptionVersion>1.0.0-previewV17</EncryptionVersion>
<CustomEncryptionVersion>1.0.0-preview</CustomEncryptionVersion>
<HybridRowVersion>1.1.0-preview3</HybridRowVersion>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -438,6 +438,9 @@ public void Visit(StoreResult storeResult)
this.jsonWriter.WriteFieldName(nameof(storeResult.RequestCharge));
this.jsonWriter.WriteNumber64Value(storeResult.RequestCharge);

this.jsonWriter.WriteFieldName(nameof(storeResult.RetryAfterInMs));
this.WriteStringValueOrNull(storeResult.RetryAfterInMs);

this.jsonWriter.WriteFieldName("BELatencyInMs");
this.WriteStringValueOrNull(storeResult.BackendRequestDurationInMs);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ namespace Microsoft.Azure.Cosmos.SDK.EmulatorTests
using System.Threading.Tasks;
using Microsoft.Azure.Cosmos.Resource.CosmosExceptions;
using Microsoft.Azure.Cosmos.Tracing;
using Microsoft.Azure.Documents;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
Expand Down Expand Up @@ -497,7 +496,7 @@ public async Task PartitionedCreateWithPathDelete()
string containerName = Guid.NewGuid().ToString();
string partitionKeyPath = "/users";

PartitionKeyDefinition partitionKeyDefinition = new PartitionKeyDefinition();
Documents.PartitionKeyDefinition partitionKeyDefinition = new Documents.PartitionKeyDefinition();
partitionKeyDefinition.Paths.Add(partitionKeyPath);

ContainerProperties settings = new ContainerProperties(containerName, partitionKeyDefinition);
Expand Down Expand Up @@ -526,7 +525,7 @@ public async Task CreateContainerIfNotExistsPropertiesTestAsync()
{
UpdateRequestMessage = requestMessage =>
{
if (requestMessage.ResourceType == ResourceType.Collection)
if (requestMessage.ResourceType == Documents.ResourceType.Collection)
{
count++;
Assert.IsNotNull(requestMessage.Properties);
Expand Down Expand Up @@ -646,7 +645,7 @@ public async Task CreateContainerWithSystemKeyTest()
//Creating existing container with partition key having value for SystemKey
//https://github.com/Azure/azure-cosmos-dotnet-v3/issues/623
string v2ContainerName = "V2Container";
PartitionKeyDefinition partitionKeyDefinition = new PartitionKeyDefinition();
Documents.PartitionKeyDefinition partitionKeyDefinition = new Documents.PartitionKeyDefinition();
partitionKeyDefinition.Paths.Add("/test");
partitionKeyDefinition.IsSystemKey = false;
ContainerProperties containerPropertiesWithSystemKey = new ContainerProperties()
Expand Down Expand Up @@ -806,7 +805,7 @@ public async Task StreamPartitionedCreateWithPathDelete()
string containerName = Guid.NewGuid().ToString();
string partitionKeyPath = "/users";

PartitionKeyDefinition partitionKeyDefinition = new PartitionKeyDefinition();
Documents.PartitionKeyDefinition partitionKeyDefinition = new Documents.PartitionKeyDefinition();
partitionKeyDefinition.Paths.Add(partitionKeyPath);

ContainerProperties settings = new ContainerProperties(containerName, partitionKeyDefinition);
Expand All @@ -826,7 +825,7 @@ public async Task NegativePartitionedCreateDelete()
{
string containerName = Guid.NewGuid().ToString();

PartitionKeyDefinition partitionKeyDefinition = new PartitionKeyDefinition();
Documents.PartitionKeyDefinition partitionKeyDefinition = new Documents.PartitionKeyDefinition();
partitionKeyDefinition.Paths.Add("/users");
partitionKeyDefinition.Paths.Add("/test");

Expand Down Expand Up @@ -1110,7 +1109,7 @@ public async Task TimeToLiveTest()
ContainerProperties setting = new ContainerProperties()
{
Id = containerName,
PartitionKey = new PartitionKeyDefinition() { Paths = new Collection<string> { partitionKeyPath }, Kind = PartitionKind.Hash },
PartitionKey = new Documents.PartitionKeyDefinition() { Paths = new Collection<string> { partitionKeyPath }, Kind = Documents.PartitionKind.Hash },
DefaultTimeToLive = timeToLiveInSeconds,
};

Expand Down Expand Up @@ -1276,7 +1275,7 @@ public async Task TimeToLivePropertyPath()
ContainerProperties setting = new ContainerProperties()
{
Id = containerName,
PartitionKey = new PartitionKeyDefinition() { Paths = new Collection<string> { partitionKeyPath }, Kind = PartitionKind.Hash },
PartitionKey = new Documents.PartitionKeyDefinition() { Paths = new Collection<string> { partitionKeyPath }, Kind = Documents.PartitionKind.Hash },
TimeToLivePropertyPath = "/creationDate",
};

Expand Down Expand Up @@ -1328,16 +1327,16 @@ public async Task TimeToLivePropertyPath()
[TestMethod]
public async Task ContainerCreationFailsWithUnknownClientEncryptionKey()
{
ClientEncryptionIncludedPath unknownKeyConfigured = new ClientEncryptionIncludedPath()
ClientEncryptionIncludedPath unknownKeyConfigured = new Cosmos.ClientEncryptionIncludedPath()
{
Path = "/",
ClientEncryptionKeyId = "unknownKey",
EncryptionType = "Deterministic",
EncryptionAlgorithm = "AEAD_AES_256_CBC_HMAC_SHA256",
};

Collection<ClientEncryptionIncludedPath> paths = new Collection<ClientEncryptionIncludedPath> { unknownKeyConfigured };
ClientEncryptionPolicy clientEncryptionPolicyId = new ClientEncryptionPolicy(paths);
Collection<Cosmos.ClientEncryptionIncludedPath> paths = new Collection<Cosmos.ClientEncryptionIncludedPath> { unknownKeyConfigured };
Cosmos.ClientEncryptionPolicy clientEncryptionPolicyId = new Cosmos.ClientEncryptionPolicy(paths);

ContainerProperties containerProperties = new ContainerProperties(Guid.NewGuid().ToString(), "/PK") { ClientEncryptionPolicy = clientEncryptionPolicyId };

Expand Down Expand Up @@ -1383,7 +1382,7 @@ public async Task ClientEncryptionPolicyTest()
ContainerProperties setting = new ContainerProperties()
{
Id = containerName,
PartitionKey = new PartitionKeyDefinition() { Paths = new Collection<string> { partitionKeyPath }, Kind = PartitionKind.Hash },
PartitionKey = new Documents.PartitionKeyDefinition() { Paths = new Collection<string> { partitionKeyPath }, Kind = Documents.PartitionKind.Hash },
ClientEncryptionPolicy = new ClientEncryptionPolicy(paths)
};

Expand Down Expand Up @@ -1457,7 +1456,7 @@ public async Task ClientEncryptionPolicyFailureTest()
ContainerProperties setting = new ContainerProperties()
{
Id = containerName,
PartitionKey = new PartitionKeyDefinition() { Paths = new Collection<string> { partitionKeyPath }, Kind = PartitionKind.Hash },
PartitionKey = new Documents.PartitionKeyDefinition() { Paths = new Collection<string> { partitionKeyPath }, Kind = Documents.PartitionKind.Hash },
ClientEncryptionPolicy = new ClientEncryptionPolicy(paths)
};

Expand Down Expand Up @@ -1493,7 +1492,7 @@ public async Task ClientEncryptionPolicyFailureTest()
ContainerProperties setting = new ContainerProperties()
{
Id = containerName,
PartitionKey = new PartitionKeyDefinition() { Paths = new Collection<string> { partitionKeyPath }, Kind = PartitionKind.Hash },
PartitionKey = new Documents.PartitionKeyDefinition() { Paths = new Collection<string> { partitionKeyPath }, Kind = Documents.PartitionKind.Hash },
ClientEncryptionPolicy = new ClientEncryptionPolicy(pathsList)
};

Expand All @@ -1520,7 +1519,7 @@ public async Task ClientEncryptionPolicyFailureTest()
ContainerProperties setting = new ContainerProperties()
{
Id = containerName,
PartitionKey = new PartitionKeyDefinition() { Paths = new Collection<string> { partitionKeyPath }, Kind = PartitionKind.Hash },
PartitionKey = new Documents.PartitionKeyDefinition() { Paths = new Collection<string> { partitionKeyPath }, Kind = Documents.PartitionKind.Hash },
ClientEncryptionPolicy = new ClientEncryptionPolicy(pathsToEncryptWithPartitionKey)
};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -169,6 +169,7 @@ private void ValidateTransportException(ResponseMessage responseMessage)
usingLocalLSN: true,
activityId: Guid.NewGuid().ToString(),
backendRequestDurationInMs: "0",
retryAfterInMs: "42",
transportRequestStats: new TransportRequestStats()),
DateTime.MinValue,
DateTime.MaxValue);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -250,6 +250,7 @@
usingLocalLSN: true,
activityId: Guid.Empty.ToString(),
backendRequestDurationInMs: "4.2",
retryAfterInMs: "42",
transportRequestStats: TraceWriterBaselineTests.CreateTransportRequestStats()),
ResourceType.Document,
OperationType.Query,
Expand Down Expand Up @@ -374,6 +375,7 @@
"IsValid": true,
"StorePhysicalAddress": "http://storephysicaladdress.com/",
"RequestCharge": 3.14,
"RetryAfterInMs": "42",
"BELatencyInMs": "4.2",
"transportRequestTimeline": {
"requestTimeline": [
Expand Down Expand Up @@ -457,6 +459,7 @@
sessionToken: default,
usingLocalLSN: default,
activityId: default,
retryAfterInMs: default,
backendRequestDurationInMs: default,
transportRequestStats: TraceWriterBaselineTests.CreateTransportRequestStats()),
resourceType: default,
Expand Down Expand Up @@ -570,6 +573,7 @@
"IsValid": false,
"StorePhysicalAddress": null,
"RequestCharge": 0,
"RetryAfterInMs": null,
"BELatencyInMs": null,
"transportRequestTimeline": {
"requestTimeline": [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ public void ValidateSerialization()
[TestMethod]
public void ValidateClientEncryptionPolicyDeserialization()
{
ClientEncryptionPolicy policy = MockCosmosUtil.Serializer.FromStream<ClientEncryptionPolicy>(new MemoryStream(
Cosmos.ClientEncryptionPolicy policy = MockCosmosUtil.Serializer.FromStream<Cosmos.ClientEncryptionPolicy>(new MemoryStream(
Encoding.UTF8.GetBytes("{ 'policyFormatVersion': 2, 'newproperty': 'value' }")));
Assert.AreEqual(2, policy.PolicyFormatVersion);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ public class ClientSideRequestStatisticsTraceDatumTests
usingLocalLSN: true,
activityId: Guid.Empty.ToString(),
backendRequestDurationInMs: "4.2",
retryAfterInMs: "42",
transportRequestStats: TraceWriterBaselineTests.CreateTransportRequestStats());

/// <summary>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,7 @@ public void ValidateStoreResultSerialization()
usingLocalLSN: true,
activityId: Guid.Empty.ToString(),
backendRequestDurationInMs: "4.2",
retryAfterInMs: "42",
transportRequestStats: TraceWriterBaselineTests.CreateTransportRequestStats());

StoreResponseStatistics storeResponseStatistics = new StoreResponseStatistics(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -381,6 +381,7 @@ public void TraceData()
usingLocalLSN: true,
activityId: Guid.Empty.ToString(),
backendRequestDurationInMs: "4.2",
retryAfterInMs: "42",
transportRequestStats: TraceWriterBaselineTests.CreateTransportRequestStats()),
ResourceType.Document,
OperationType.Query,
Expand Down Expand Up @@ -431,6 +432,7 @@ public void TraceData()
sessionToken: default,
usingLocalLSN: default,
activityId: default,
retryAfterInMs: default,
backendRequestDurationInMs: default,
transportRequestStats: TraceWriterBaselineTests.CreateTransportRequestStats()),
resourceType: default,
Expand Down

0 comments on commit 40075eb

Please sign in to comment.