Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 1 addition & 5 deletions Microsoft.Azure.Cosmos/src/Routing/GlobalEndpointManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -771,11 +771,7 @@ public IList<string> GetEffectivePreferredLocations()

public Uri ResolveThinClientEndpoint(DocumentServiceRequest request)
{
bool isReadRequest = request.IsReadOnlyRequest
|| request.OperationType == OperationType.Query
|| request.OperationType == OperationType.ReadFeed;

return this.locationCache.ResolveThinClientEndpoint(request, isReadRequest);
return this.locationCache.ResolveThinClientEndpoint(request, request.IsReadOnlyRequest);
Comment thread
aavasthy marked this conversation as resolved.
}
}
}
5 changes: 0 additions & 5 deletions Microsoft.Azure.Cosmos/src/ThinClientStoreClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -91,11 +91,6 @@ private async ValueTask<HttpRequestMessage> PrepareRequestForProxyAsync(
BufferProviderWrapper bufferProviderWrapper = this.bufferProviderWrapperPool.Get();
try
{
ContainerProperties collection = await clientCollectionCache.ResolveCollectionAsync(
request,
CancellationToken.None,
NoOpTrace.Singleton);
request.ResourceId = collection.ResourceId;
requestMessage.Headers.TryAddWithoutValidation(
ThinClientConstants.ProxyOperationType,
request.OperationType.ToOperationTypeString());
Expand Down
11 changes: 7 additions & 4 deletions Microsoft.Azure.Cosmos/src/ThinClientTransportSerializer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,11 @@ public static async Task<Stream> SerializeProxyRequestAsync(
requestStream, AuthorizationTokenType.PrimaryMasterKey,
dictionaryCollection);

ContainerProperties collection = await clientCollectionCache.ResolveCollectionAsync(
request,
CancellationToken.None,
NoOpTrace.Singleton);

if (operationType.IsPointOperation())
{
string partitionKey = request.Headers.Get(HttpConstants.HttpHeaders.PartitionKey);
Expand All @@ -72,10 +77,6 @@ public static async Task<Stream> SerializeProxyRequestAsync(
throw new InternalServerErrorException();
}

ContainerProperties collection = await clientCollectionCache.ResolveCollectionAsync(
request,
CancellationToken.None,
NoOpTrace.Singleton);
string epk = GetEffectivePartitionKeyHash(partitionKey, collection.PartitionKey);

request.Properties = new Dictionary<string, object>
Expand All @@ -96,6 +97,8 @@ public static async Task<Stream> SerializeProxyRequestAsync(
request.Headers.Add(HttpConstants.HttpHeaders.StartEpk, request.Headers[ThinClientConstants.ProxyStartEpk]);
request.Headers.Add(HttpConstants.HttpHeaders.EndEpk, request.Headers[ThinClientConstants.ProxyEndEpk]);
}
request.ResourceId = collection.ResourceId;
request.Headers.Add(WFConstants.BackendHeaders.CollectionRid, collection.ResourceId);

await request.EnsureBufferedBodyAsync();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,13 @@ public async Task SerializeProxyRequestAsync_ShouldThrowIfNoPartitionKeyInPointO
CallBase = true
};

clientCollectionCacheMock
.Setup(c => c.ResolveCollectionAsync(
It.IsAny<DocumentServiceRequest>(),
It.IsAny<CancellationToken>(),
It.IsAny<ITrace>()))
.ReturnsAsync(this.GetMockContainerProperties());

// Act & Assert
await Assert.ThrowsExceptionAsync<InternalServerErrorException>(
() => ThinClientTransportSerializer.SerializeProxyRequestAsync(
Expand Down Expand Up @@ -168,17 +175,24 @@ public async Task ConvertProxyResponseAsync_ShouldReturnHttpResponse_WhenValid()
Assert.IsTrue(
converted.Headers.Any(h => h.Key == ThinClientConstants.RoutedViaProxy),
"Expected 'x-ms-thinclient-route-via-proxy' header to be set in the converted response.");
}

private ContainerProperties GetMockContainerProperties()
{
ContainerProperties containerProperties = new ContainerProperties
{
PartitionKey = new PartitionKeyDefinition
{
Paths = new Collection<string> { "/pk" }
}
};

typeof(ContainerProperties)
.GetProperty("ResourceId", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance)
?.SetValue(containerProperties, "-Jlvm9pqHGk=");

return containerProperties;
}

private ContainerProperties GetMockContainerProperties()
{
return new ContainerProperties
{
PartitionKey = new PartitionKeyDefinition
{
Paths = new Collection<string> { "/pk" }
}
};
}
}
}
Loading