From 613f3271f7c3f25c11b1600e056015253a2185b2 Mon Sep 17 00:00:00 2001 From: Naveen Kumar Singh Date: Tue, 19 May 2020 15:40:52 -0400 Subject: [PATCH 1/2] movingFeedDiagnosticToCosmosDiagnostic --- .../java/com/azure/cosmos/BridgeInternal.java | 4 ++-- .../com/azure/cosmos/CosmosDiagnostics.java | 20 ++++++++++++++++--- .../com/azure/cosmos/models/FeedResponse.java | 10 +++++----- 3 files changed, 24 insertions(+), 10 deletions(-) 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..03ec86c7b491 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 @@ -119,8 +119,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..b3e10ae95e37 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,9 @@ // Licensed under the MIT License. package com.azure.cosmos; +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 +18,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 +44,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 +57,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/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() { From 22124e1a0a751fe8f1936ab358064a8e0717f7fd Mon Sep 17 00:00:00 2001 From: Naveen Kumar Singh Date: Wed, 20 May 2020 10:05:29 -0400 Subject: [PATCH 2/2] moving feeddiagnostics to implementation --- .../src/main/java/com/azure/cosmos/BridgeInternal.java | 1 + .../src/main/java/com/azure/cosmos/CosmosDiagnostics.java | 1 + .../cosmos/{ => implementation}/FeedResponseDiagnostics.java | 5 ++--- 3 files changed, 4 insertions(+), 3 deletions(-) rename sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/{ => implementation}/FeedResponseDiagnostics.java (91%) 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 03ec86c7b491..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; 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 b3e10ae95e37..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,6 +2,7 @@ // 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; 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; }