diff --git a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/BridgeInternal.java b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/BridgeInternal.java index f4eaac6934b0..01a2975d0feb 100644 --- a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/BridgeInternal.java +++ b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/BridgeInternal.java @@ -8,6 +8,7 @@ import com.azure.cosmos.implementation.CosmosItemProperties; import com.azure.cosmos.implementation.DatabaseAccount; import com.azure.cosmos.implementation.Document; +import com.azure.cosmos.implementation.FeedResponseDiagnostics; import com.azure.cosmos.implementation.JsonSerializable; import com.azure.cosmos.implementation.MetadataDiagnosticsContext; import com.azure.cosmos.implementation.QueryMetrics; @@ -119,8 +120,8 @@ public static FeedResponse createFeedResponseWithQueryMetrics(List res } @Warning(value = INTERNAL_USE_ONLY_WARNING) - public static FeedResponseDiagnostics createFeedResponseDiagnostics(Map queryMetricsMap) { - return new FeedResponseDiagnostics(queryMetricsMap); + public static CosmosDiagnostics createCosmosDiagnostics(Map queryMetricsMap) { + return new CosmosDiagnostics(new FeedResponseDiagnostics(queryMetricsMap)); } @Warning(value = INTERNAL_USE_ONLY_WARNING) diff --git a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/CosmosDiagnostics.java b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/CosmosDiagnostics.java index 5398f0e10664..ae385646d228 100644 --- a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/CosmosDiagnostics.java +++ b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/CosmosDiagnostics.java @@ -2,9 +2,10 @@ // Licensed under the MIT License. package com.azure.cosmos; +import com.azure.cosmos.implementation.FeedResponseDiagnostics; +import com.azure.cosmos.implementation.apachecommons.lang.StringUtils; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; -import com.azure.cosmos.implementation.apachecommons.lang.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -18,11 +19,16 @@ public final class CosmosDiagnostics { private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); private ClientSideRequestStatistics clientSideRequestStatistics; + private FeedResponseDiagnostics feedResponseDiagnostics; CosmosDiagnostics() { this.clientSideRequestStatistics = new ClientSideRequestStatistics(); } + CosmosDiagnostics(FeedResponseDiagnostics feedResponseDiagnostics) { + this.feedResponseDiagnostics = feedResponseDiagnostics; + } + ClientSideRequestStatistics clientSideRequestStatistics() { return clientSideRequestStatistics; } @@ -39,6 +45,10 @@ CosmosDiagnostics clientSideRequestStatistics(ClientSideRequestStatistics client */ @Override public String toString() { + if (this.feedResponseDiagnostics != null) { + return feedResponseDiagnostics.toString(); + } + try { return OBJECT_MAPPER.writeValueAsString(this.clientSideRequestStatistics); } catch (JsonProcessingException e) { @@ -48,12 +58,17 @@ public String toString() { } /** - * Retrieves duration related to the completion of the request - * This represents end to end duration of an operation including all the retries + * Retrieves duration related to the completion of the request. + * This represents end to end duration of an operation including all the retries. + * This is meant for point operation only, for query please use toString() to get full query diagnostics. * * @return request completion duration */ public Duration getDuration() { + if (this.feedResponseDiagnostics != null) { + return null; + } + return this.clientSideRequestStatistics.getDuration(); } } diff --git a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/FeedResponseDiagnostics.java b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/FeedResponseDiagnostics.java similarity index 91% rename from sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/FeedResponseDiagnostics.java rename to sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/FeedResponseDiagnostics.java index 42dfdb91e0df..ec89efb39737 100644 --- a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/FeedResponseDiagnostics.java +++ b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/FeedResponseDiagnostics.java @@ -1,9 +1,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.cosmos; +package com.azure.cosmos.implementation; -import com.azure.cosmos.implementation.QueryMetrics; import com.azure.cosmos.implementation.apachecommons.lang.StringUtils; import java.util.Map; @@ -15,7 +14,7 @@ public final class FeedResponseDiagnostics { private Map queryMetricsMap; - FeedResponseDiagnostics(Map queryMetricsMap) { + public FeedResponseDiagnostics(Map queryMetricsMap) { this.queryMetricsMap = queryMetricsMap; } diff --git a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/models/FeedResponse.java b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/models/FeedResponse.java index 154ae20c75de..417f7fc6f727 100644 --- a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/models/FeedResponse.java +++ b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/models/FeedResponse.java @@ -6,7 +6,7 @@ import com.azure.core.util.IterableStream; import com.azure.core.util.paging.ContinuablePage; import com.azure.cosmos.BridgeInternal; -import com.azure.cosmos.FeedResponseDiagnostics; +import com.azure.cosmos.CosmosDiagnostics; import com.azure.cosmos.implementation.Constants; import com.azure.cosmos.implementation.HttpConstants; import com.azure.cosmos.implementation.QueryMetrics; @@ -34,7 +34,7 @@ public class FeedResponse implements ContinuablePage { final boolean nochanges; private final ConcurrentMap queryMetricsMap; private final static String defaultPartition = "0"; - private final FeedResponseDiagnostics feedResponseDiagnostics; + private final CosmosDiagnostics cosmosDiagnostics; FeedResponse(List results, Map headers) { this(results, headers, false, false, new ConcurrentHashMap<>()); @@ -63,7 +63,7 @@ private FeedResponse( this.useEtagAsContinuation = useEtagAsContinuation; this.nochanges = nochanges; this.queryMetricsMap = new ConcurrentHashMap<>(queryMetricsMap); - this.feedResponseDiagnostics = BridgeInternal.createFeedResponseDiagnostics(queryMetricsMap); + this.cosmosDiagnostics = BridgeInternal.createCosmosDiagnostics(queryMetricsMap); } /** @@ -309,8 +309,8 @@ private String getQueryMetricsString() { * * @return Feed response diagnostics */ - public FeedResponseDiagnostics getFeedResponseDiagnostics() { - return this.feedResponseDiagnostics; + public CosmosDiagnostics getCosmosDiagnostics() { + return this.cosmosDiagnostics; } ConcurrentMap queryMetrics() {