Skip to content

Commit d3cf3ee

Browse files
authored
[Internal] Query: Adds Constants for Trace Datum Keys (#5266)
## Description Adds a new class for trace datum keys so that trace parsing in query benchmarks stays up to date.
1 parent 32f8b00 commit d3cf3ee

5 files changed

Lines changed: 33 additions & 28 deletions

File tree

Microsoft.Azure.Cosmos/src/Query/Core/QueryClient/CosmosDistributedQueryClient.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ private static TryCatch<QueryPage> CreatePage(DocumentServiceResponse response,
130130
queryMetricsText,
131131
IndexUtilizationInfo.Empty,
132132
ClientSideMetrics.Empty)));
133-
trace.AddDatum("Query Metrics", datum);
133+
trace.AddDatum(TraceDatumKeys.QueryMetrics, datum);
134134
}
135135

136136
Headers headers = new Headers(response.Headers);

Microsoft.Azure.Cosmos/src/Query/v3Query/CosmosQueryClientCore.cs

Lines changed: 3 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,9 @@ namespace Microsoft.Azure.Cosmos
66
{
77
using System;
88
using System.Collections.Generic;
9-
using System.Diagnostics;
109
using System.Globalization;
1110
using System.IO;
1211
using System.Linq;
13-
using System.Text;
1412
using System.Threading;
1513
using System.Threading.Tasks;
1614

@@ -304,7 +302,7 @@ private static TryCatch<QueryPage> GetCosmosElementResponse(
304302
ResponseMessage cosmosResponseMessage,
305303
ITrace trace)
306304
{
307-
using (ITrace getCosmosElementResponse = trace.StartChild("Get Cosmos Element Response", TraceComponent.Json, Tracing.TraceLevel.Info))
305+
using (ITrace getCosmosElementResponse = trace.StartChild(TraceDatumKeys.GetCosmosElementResponse, TraceComponent.Json, Tracing.TraceLevel.Info))
308306
{
309307
using (cosmosResponseMessage)
310308
{
@@ -315,7 +313,7 @@ private static TryCatch<QueryPage> GetCosmosElementResponse(
315313
cosmosResponseMessage.Headers.QueryMetricsText,
316314
IndexUtilizationInfo.Empty,
317315
ClientSideMetrics.Empty)));
318-
trace.AddDatum("Query Metrics", datum);
316+
trace.AddDatum(TraceDatumKeys.QueryMetrics, datum);
319317
}
320318

321319
if (!cosmosResponseMessage.IsSuccessStatusCode)
@@ -371,16 +369,7 @@ internal static TryCatch<QueryPage> CreateQueryPage(
371369
// }
372370
// }
373371

374-
QueryState queryState;
375-
if (headers.ContinuationToken != null)
376-
{
377-
queryState = new QueryState(CosmosString.Create(headers.ContinuationToken));
378-
}
379-
else
380-
{
381-
queryState = default;
382-
}
383-
372+
QueryState queryState = (headers.ContinuationToken != null) ? new QueryState(CosmosString.Create(headers.ContinuationToken)) : default;
384373
Dictionary<string, string> additionalHeaders = new Dictionary<string, string>();
385374
foreach (string key in headers)
386375
{

Microsoft.Azure.Cosmos/src/Resource/CosmosResponseFactoryCore.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ namespace Microsoft.Azure.Cosmos
66
{
77
using System;
88
using Microsoft.Azure.Cosmos.Scripts;
9+
using Microsoft.Azure.Cosmos.Tracing.TraceData;
910

1011
internal sealed class CosmosResponseFactoryCore : CosmosResponseFactoryInternal
1112
{
@@ -53,15 +54,15 @@ private FeedResponse<T> CreateQueryFeedResponseHelper<T>(
5354
{
5455
if (cosmosResponseMessage is QueryResponse queryResponse)
5556
{
56-
using (cosmosResponseMessage.Trace.StartChild("Query Response Serialization"))
57+
using (cosmosResponseMessage.Trace.StartChild(TraceDatumKeys.QueryResponseSerialization))
5758
{
5859
return QueryResponse<T>.CreateResponse<T>(
5960
cosmosQueryResponse: queryResponse,
6061
serializerCore: this.serializerCore);
6162
}
6263
}
6364

64-
using (cosmosResponseMessage.Trace.StartChild("Feed Response Serialization"))
65+
using (cosmosResponseMessage.Trace.StartChild(TraceDatumKeys.FeedResponseSerialization))
6566
{
6667
return ReadFeedResponse<T>.CreateResponse<T>(
6768
cosmosResponseMessage,
@@ -73,7 +74,7 @@ private FeedResponse<T> CreateQueryFeedResponseHelper<T>(
7374
private FeedResponse<T> CreateChangeFeedResponseHelper<T>(
7475
ResponseMessage cosmosResponseMessage)
7576
{
76-
using (cosmosResponseMessage.Trace.StartChild("ChangeFeed Response Serialization"))
77+
using (cosmosResponseMessage.Trace.StartChild(TraceDatumKeys.ChangeFeedResponseSerialization))
7778
{
7879
return ReadFeedResponse<T>.CreateResponse<T>(
7980
cosmosResponseMessage,
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
// ------------------------------------------------------------
2+
// Copyright (c) Microsoft Corporation. All rights reserved.
3+
// ------------------------------------------------------------
4+
5+
namespace Microsoft.Azure.Cosmos.Tracing.TraceData
6+
{
7+
internal static class TraceDatumKeys
8+
{
9+
public const string ClientSideRequestStats = "Client Side Request Stats";
10+
public const string TransportRequest = "Microsoft.Azure.Documents.ServerStoreModel Transport Request";
11+
public const string GetCosmosElementResponse = "Get Cosmos Element Response";
12+
public const string QueryMetrics = "Query Metrics";
13+
public const string QueryResponseSerialization = "Query Response Serialization";
14+
public const string FeedResponseSerialization = "Feed Response Serialization";
15+
public const string ChangeFeedResponseSerialization = "ChangeFeed Response Serialization";
16+
}
17+
}

Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.EmulatorTests/QueryPerfTest/MetricsAccumulator.cs

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,31 +12,29 @@
1212

1313
internal class MetricsAccumulator
1414
{
15-
private const string QueryMetricsKey = "Query Metrics";
16-
private const string ClientSideRequestStatsKey = "Client Side Request Stats";
17-
private const string PocoMaterializationNode = "Query Response Serialization";
18-
private const string GetCosmosElementResponseNode = "Get Cosmos Element Response";
19-
private const string TransportRequestNode = "Microsoft.Azure.Documents.ServerStoreModel Transport Request";
20-
2115
public void ReadFromTrace<T>(FeedResponse<T> response, QueryStatisticsDatumVisitor queryStatisticsDatumVisitor)
2216
{
2317
ITrace trace = ((CosmosTraceDiagnostics)response.Diagnostics).Value;
2418

2519
// POCO materialization occurs once per item each roundtrip for calls with status code 200
26-
List<ITrace> retrieveQueryMetricTraces = this.ExtractTraces(trace: trace, nodeOrKeyName: PocoMaterializationNode, isKeyName: false);
20+
List<ITrace> retrieveQueryMetricTraces = this.ExtractTraces(trace: trace, nodeOrKeyName: TraceDatumKeys.QueryResponseSerialization, isKeyName: false);
2721
foreach (ITrace queryMetricTrace in retrieveQueryMetricTraces)
2822
{
2923
queryStatisticsDatumVisitor.AddPocoTime(queryMetricTrace.Duration.TotalMilliseconds);
3024
}
3125

3226
// Get cosmos element response occurs once per roundtrip for calls with status code 200
33-
List<ITrace> getCosmosElementTraces = this.ExtractTraces(trace: trace, nodeOrKeyName: GetCosmosElementResponseNode, isKeyName: false);
27+
List<ITrace> getCosmosElementTraces = this.ExtractTraces(trace: trace, nodeOrKeyName: TraceDatumKeys.GetCosmosElementResponse, isKeyName: false);
3428

3529
// Query combinedMetrics occurs once per roundtrip for calls with status code 200
36-
List<ITrace> queryMetricsTraces = this.ExtractTraces(trace: trace, nodeOrKeyName: QueryMetricsKey, isKeyName: true);
30+
List<ITrace> queryMetricsTraces = this.ExtractTraces(trace: trace, nodeOrKeyName: TraceDatumKeys.QueryMetrics, isKeyName: true);
3731

3832
// Clientside request stats occur once per roundtrip for all status codes
39-
List<ITrace> clientSideRequestStatsTraces = this.ExtractTraces(trace: trace, nodeOrKeyName: ClientSideRequestStatsKey, isKeyName: true, currentNodeName: TransportRequestNode);
33+
List<ITrace> clientSideRequestStatsTraces = this.ExtractTraces(
34+
trace: trace,
35+
nodeOrKeyName: TraceDatumKeys.ClientSideRequestStats,
36+
isKeyName: true,
37+
currentNodeName: TraceDatumKeys.TransportRequest);
4038

4139
List<QueryCombinedMetricsTraces> combinedMetricsList = new();
4240
int getCosmosElementTraceCount = 0;

0 commit comments

Comments
 (0)