From 202b00c4174886e9e098d49216ecd0f1321a4e9e Mon Sep 17 00:00:00 2001 From: Sandeep Kumar Sharma Date: Tue, 4 May 2021 16:28:24 +0530 Subject: [PATCH 01/10] feat: fetching log records and showing log icon --- .../distributed-tracing/src/public-api.ts | 1 + .../components/span-detail/span-data.ts | 3 ++ .../trace-waterfall-data-source.model.test.ts | 34 +++++++++++++++++++ .../trace-waterfall-data-source.model.ts | 16 +++++++-- .../span-name/span-name-cell-data.ts | 1 + ...an-name-table-cell-renderer.component.scss | 6 +++- ...name-table-cell-renderer.component.test.ts | 11 ++++++ ...span-name-table-cell-renderer.component.ts | 7 ++++ .../waterfall/waterfall-chart.service.ts | 3 +- .../waterfall/waterfall/waterfall-chart.ts | 10 ++++++ .../trace-graphql-query-handler.service.ts | 22 ++++++++++-- ...-trace-waterfall-data-source.model.test.ts | 34 +++++++++++++++++++ .../api-trace-waterfall-data-source.model.ts | 11 +++++- 13 files changed, 151 insertions(+), 8 deletions(-) diff --git a/projects/distributed-tracing/src/public-api.ts b/projects/distributed-tracing/src/public-api.ts index 523fd1306..327e12e1f 100644 --- a/projects/distributed-tracing/src/public-api.ts +++ b/projects/distributed-tracing/src/public-api.ts @@ -102,6 +102,7 @@ export { WaterfallData } from './shared/dashboard/widgets/waterfall/waterfall/wa export { TraceWaterfallDataSourceModel } from './shared/dashboard/data/graphql/waterfall/trace-waterfall-data-source.model'; export { traceDetailDashboard } from './pages/trace-detail/trace-detail.dashboard'; export { TraceDetailPageComponent } from './pages/trace-detail/trace-detail.page.component'; +export { LogEvent } from './shared/dashboard/widgets/waterfall/waterfall/waterfall-chart'; // Datasources export * from './shared/dashboard/widgets/trace-detail/data/trace-detail-data-source.model'; diff --git a/projects/distributed-tracing/src/shared/components/span-detail/span-data.ts b/projects/distributed-tracing/src/shared/components/span-detail/span-data.ts index 94100c3e8..1cfbe7686 100644 --- a/projects/distributed-tracing/src/shared/components/span-detail/span-data.ts +++ b/projects/distributed-tracing/src/shared/components/span-detail/span-data.ts @@ -1,4 +1,5 @@ import { Dictionary } from '@hypertrace/common'; +import { LogEvent } from '../../dashboard/widgets/waterfall/waterfall/waterfall-chart'; export interface SpanData { id: string; @@ -12,4 +13,6 @@ export interface SpanData { tags: Dictionary; requestUrl: string; exitCallsBreakup?: Dictionary; + startTime?: number; + logEvents?: LogEvent[]; } diff --git a/projects/distributed-tracing/src/shared/dashboard/data/graphql/waterfall/trace-waterfall-data-source.model.test.ts b/projects/distributed-tracing/src/shared/dashboard/data/graphql/waterfall/trace-waterfall-data-source.model.test.ts index db942fc88..6db824d68 100644 --- a/projects/distributed-tracing/src/shared/dashboard/data/graphql/waterfall/trace-waterfall-data-source.model.test.ts +++ b/projects/distributed-tracing/src/shared/dashboard/data/graphql/waterfall/trace-waterfall-data-source.model.test.ts @@ -96,6 +96,23 @@ describe('Trace Waterfall data source model', () => { expect.objectContaining({ name: 'errorCount' }) + ], + logEventProperties: [ + expect.objectContaining({ + name: 'traceId' + }), + expect.objectContaining({ + name: 'attributes' + }), + expect.objectContaining({ + name: 'timestamp' + }), + expect.objectContaining({ + name: 'spanId' + }), + expect.objectContaining({ + name: 'summary' + }) ] } }); @@ -156,6 +173,23 @@ describe('Trace Waterfall data source model', () => { expect.objectContaining({ name: 'errorCount' }) + ], + logEventProperties: [ + expect.objectContaining({ + name: 'traceId' + }), + expect.objectContaining({ + name: 'attributes' + }), + expect.objectContaining({ + name: 'timestamp' + }), + expect.objectContaining({ + name: 'spanId' + }), + expect.objectContaining({ + name: 'summary' + }) ] } }); diff --git a/projects/distributed-tracing/src/shared/dashboard/data/graphql/waterfall/trace-waterfall-data-source.model.ts b/projects/distributed-tracing/src/shared/dashboard/data/graphql/waterfall/trace-waterfall-data-source.model.ts index 1f6c399c1..d25e7448d 100644 --- a/projects/distributed-tracing/src/shared/dashboard/data/graphql/waterfall/trace-waterfall-data-source.model.ts +++ b/projects/distributed-tracing/src/shared/dashboard/data/graphql/waterfall/trace-waterfall-data-source.model.ts @@ -13,7 +13,7 @@ import { TRACE_GQL_REQUEST } from '../../../../graphql/request/handlers/traces/trace-graphql-query-handler.service'; import { MetadataService } from '../../../../services/metadata/metadata.service'; -import { WaterfallData } from '../../../widgets/waterfall/waterfall/waterfall-chart'; +import { LogEvent, WaterfallData } from '../../../widgets/waterfall/waterfall/waterfall-chart'; import { GraphQlDataSourceModel } from '../graphql-data-source.model'; @Model({ @@ -60,6 +60,14 @@ export class TraceWaterfallDataSourceModel extends GraphQlDataSourceModel { return combineLatest([this.getTraceData(), this.getDurationAttribute()]).pipe( map(combinedData => this.mapResponseObject(combinedData[0], combinedData[1])) @@ -73,7 +81,8 @@ export class TraceWaterfallDataSourceModel extends GraphQlDataSourceModel, - errorCount: span.errorCount as number + errorCount: span.errorCount as number, + logEvents: ((span.logEvents as Dictionary) ?? {}).results })); } } diff --git a/projects/distributed-tracing/src/shared/dashboard/widgets/waterfall/waterfall/span-name/span-name-cell-data.ts b/projects/distributed-tracing/src/shared/dashboard/widgets/waterfall/waterfall/span-name/span-name-cell-data.ts index 98d5863ca..79bc000dc 100644 --- a/projects/distributed-tracing/src/shared/dashboard/widgets/waterfall/waterfall/span-name/span-name-cell-data.ts +++ b/projects/distributed-tracing/src/shared/dashboard/widgets/waterfall/waterfall/span-name/span-name-cell-data.ts @@ -4,4 +4,5 @@ export interface SpanNameCellData { apiName?: string; color?: string; hasError?: boolean; + hasLogs?: boolean; } diff --git a/projects/distributed-tracing/src/shared/dashboard/widgets/waterfall/waterfall/span-name/span-name-table-cell-renderer.component.scss b/projects/distributed-tracing/src/shared/dashboard/widgets/waterfall/waterfall/span-name/span-name-table-cell-renderer.component.scss index 512260542..874d26418 100644 --- a/projects/distributed-tracing/src/shared/dashboard/widgets/waterfall/waterfall/span-name/span-name-table-cell-renderer.component.scss +++ b/projects/distributed-tracing/src/shared/dashboard/widgets/waterfall/waterfall/span-name/span-name-table-cell-renderer.component.scss @@ -7,7 +7,7 @@ .span-title { display: grid; - grid-template-columns: 3px min-content min-content min-content auto; + grid-template-columns: 3px min-content min-content min-content min-content auto; grid-template-rows: 1fr; column-gap: 4px; @@ -41,6 +41,10 @@ .text { @include ellipsis-overflow(); } + + .log-icon { + margin: auto 0; + } } .clickable { diff --git a/projects/distributed-tracing/src/shared/dashboard/widgets/waterfall/waterfall/span-name/span-name-table-cell-renderer.component.test.ts b/projects/distributed-tracing/src/shared/dashboard/widgets/waterfall/waterfall/span-name/span-name-table-cell-renderer.component.test.ts index 626747f60..71b39664a 100644 --- a/projects/distributed-tracing/src/shared/dashboard/widgets/waterfall/waterfall/span-name/span-name-table-cell-renderer.component.test.ts +++ b/projects/distributed-tracing/src/shared/dashboard/widgets/waterfall/waterfall/span-name/span-name-table-cell-renderer.component.test.ts @@ -61,4 +61,15 @@ describe('Span name table cell renderer component', () => { expect(spectator.query('.color-bar')).toExist(); expect(spectator.query('.error-icon')).toExist(); }); + + test('should render log icon ', () => { + const spanNameDataWithColor = { + ...spanNameData, + hasLogs: true + }; + const spectator = buildComponent({ + providers: [tableCellDataProvider(spanNameDataWithColor)] + }); + expect(spectator.query('.log-icon')).toExist(); + }); }); diff --git a/projects/distributed-tracing/src/shared/dashboard/widgets/waterfall/waterfall/span-name/span-name-table-cell-renderer.component.ts b/projects/distributed-tracing/src/shared/dashboard/widgets/waterfall/waterfall/span-name/span-name-table-cell-renderer.component.ts index d310aa23b..4b8a61189 100644 --- a/projects/distributed-tracing/src/shared/dashboard/widgets/waterfall/waterfall/span-name/span-name-table-cell-renderer.component.ts +++ b/projects/distributed-tracing/src/shared/dashboard/widgets/waterfall/waterfall/span-name/span-name-table-cell-renderer.component.ts @@ -28,6 +28,13 @@ import { WaterfallTableCellType } from './span-name-cell-type'; size="${IconSize.Medium}" color="${Color.Red5}" > + ` }) diff --git a/projects/distributed-tracing/src/shared/dashboard/widgets/waterfall/waterfall/waterfall-chart.service.ts b/projects/distributed-tracing/src/shared/dashboard/widgets/waterfall/waterfall/waterfall-chart.service.ts index 142813a93..0d7ae6748 100644 --- a/projects/distributed-tracing/src/shared/dashboard/widgets/waterfall/waterfall/waterfall-chart.service.ts +++ b/projects/distributed-tracing/src/shared/dashboard/widgets/waterfall/waterfall/waterfall-chart.service.ts @@ -42,7 +42,8 @@ export class WaterfallChartService { apiName: datum.apiName, serviceName: datum.serviceName, protocolName: datum.protocolName, - hasError: datum.errorCount > 0 + hasError: datum.errorCount > 0, + hasLogs: datum.logEvents && datum.logEvents.length > 0 }, $$iconType: this.iconLookupService.forSpanType(datum.spanType)!, getChildren: () => of([]), diff --git a/projects/distributed-tracing/src/shared/dashboard/widgets/waterfall/waterfall/waterfall-chart.ts b/projects/distributed-tracing/src/shared/dashboard/widgets/waterfall/waterfall/waterfall-chart.ts index e05b239ad..4e2d76ca3 100644 --- a/projects/distributed-tracing/src/shared/dashboard/widgets/waterfall/waterfall/waterfall-chart.ts +++ b/projects/distributed-tracing/src/shared/dashboard/widgets/waterfall/waterfall/waterfall-chart.ts @@ -23,6 +23,7 @@ export interface WaterfallData { responseBody?: string; tags: Dictionary; errorCount: number; + logEvents?: LogEvent[]; } export interface WaterfallDataNode extends WaterfallData, Omit { @@ -37,3 +38,12 @@ export interface WaterfallChartState { children: WaterfallDataNode[]; expanded: boolean; } + +export interface LogEvent { + [key: string]: unknown; + traceId?: string; + spanId?: string; + attributes?: Dictionary; + timestamp?: string; + summary?: string; +} diff --git a/projects/distributed-tracing/src/shared/graphql/request/handlers/traces/trace-graphql-query-handler.service.ts b/projects/distributed-tracing/src/shared/graphql/request/handlers/traces/trace-graphql-query-handler.service.ts index 0c3a65478..7c4c9aa4d 100644 --- a/projects/distributed-tracing/src/shared/graphql/request/handlers/traces/trace-graphql-query-handler.service.ts +++ b/projects/distributed-tracing/src/shared/graphql/request/handlers/traces/trace-graphql-query-handler.service.ts @@ -73,7 +73,23 @@ export class TraceGraphQlQueryHandlerService implements GraphQlQueryHandler { const span: Span = { - [spanIdKey]: spanRawResult.id as string + [spanIdKey]: spanRawResult.id as string, + ...(!isEmpty(spanRawResult.logEvents) && { logEvents: spanRawResult.logEvents }) }; (request.spanProperties || []).forEach(property => { @@ -175,6 +192,7 @@ export interface GraphQlTraceRequest { spanLimit: number; spanId?: string; spanProperties?: Specification[]; + logEventProperties?: Specification[]; } interface TraceServerResponse { diff --git a/projects/observability/src/shared/dashboard/data/graphql/waterfall/api-trace-waterfall-data-source.model.test.ts b/projects/observability/src/shared/dashboard/data/graphql/waterfall/api-trace-waterfall-data-source.model.test.ts index 220d76c55..4e5beb29c 100644 --- a/projects/observability/src/shared/dashboard/data/graphql/waterfall/api-trace-waterfall-data-source.model.test.ts +++ b/projects/observability/src/shared/dashboard/data/graphql/waterfall/api-trace-waterfall-data-source.model.test.ts @@ -102,6 +102,23 @@ describe('Api Trace Waterfall data source model', () => { expect.objectContaining({ name: 'errorCount' }) + ], + logEventProperties: [ + expect.objectContaining({ + name: 'traceId' + }), + expect.objectContaining({ + name: 'attributes' + }), + expect.objectContaining({ + name: 'timestamp' + }), + expect.objectContaining({ + name: 'spanId' + }), + expect.objectContaining({ + name: 'summary' + }) ] } }); @@ -163,6 +180,23 @@ describe('Api Trace Waterfall data source model', () => { expect.objectContaining({ name: 'errorCount' }) + ], + logEventProperties: [ + expect.objectContaining({ + name: 'traceId' + }), + expect.objectContaining({ + name: 'attributes' + }), + expect.objectContaining({ + name: 'timestamp' + }), + expect.objectContaining({ + name: 'spanId' + }), + expect.objectContaining({ + name: 'summary' + }) ] } }); diff --git a/projects/observability/src/shared/dashboard/data/graphql/waterfall/api-trace-waterfall-data-source.model.ts b/projects/observability/src/shared/dashboard/data/graphql/waterfall/api-trace-waterfall-data-source.model.ts index 26789a657..0c0f325a4 100644 --- a/projects/observability/src/shared/dashboard/data/graphql/waterfall/api-trace-waterfall-data-source.model.ts +++ b/projects/observability/src/shared/dashboard/data/graphql/waterfall/api-trace-waterfall-data-source.model.ts @@ -2,6 +2,7 @@ import { DateCoercer, Dictionary } from '@hypertrace/common'; import { AttributeMetadata, GraphQlDataSourceModel, + LogEvent, MetadataService, Span, spanIdKey, @@ -65,6 +66,10 @@ export class ApiTraceWaterfallDataSourceModel extends GraphQlDataSourceModel { return this.query({ requestType: TRACE_GQL_REQUEST, @@ -75,6 +80,9 @@ export class ApiTraceWaterfallDataSourceModel extends GraphQlDataSourceModel this.specificationBuilder.attributeSpecificationForKey(attribute) + ), + logEventProperties: this.getLogEventAttributes().map(attribute => + this.specificationBuilder.attributeSpecificationForKey(attribute) ) }); } @@ -108,7 +116,8 @@ export class ApiTraceWaterfallDataSourceModel extends GraphQlDataSourceModel, - errorCount: span.errorCount as number + errorCount: span.errorCount as number, + logEvents: ((span.logEvents as Dictionary) ?? {}).results }; } } From 8f0b5c8eb02fc9e6832cbfbf959be38e8bf5bfd5 Mon Sep 17 00:00:00 2001 From: Sandeep Kumar Sharma Date: Tue, 4 May 2021 18:54:53 +0530 Subject: [PATCH 02/10] fix: adding trace start time to span data --- .../src/shared/components/span-detail/span-data.ts | 1 + .../waterfall/trace-waterfall-data-source.model.ts | 1 + .../widgets/waterfall/waterfall/waterfall-chart.ts | 11 ++++++----- .../api-trace-waterfall-data-source.model.ts | 1 + 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/projects/distributed-tracing/src/shared/components/span-detail/span-data.ts b/projects/distributed-tracing/src/shared/components/span-detail/span-data.ts index 1cfbe7686..f259857ed 100644 --- a/projects/distributed-tracing/src/shared/components/span-detail/span-data.ts +++ b/projects/distributed-tracing/src/shared/components/span-detail/span-data.ts @@ -14,5 +14,6 @@ export interface SpanData { requestUrl: string; exitCallsBreakup?: Dictionary; startTime?: number; + traceStartTime?: number; logEvents?: LogEvent[]; } diff --git a/projects/distributed-tracing/src/shared/dashboard/data/graphql/waterfall/trace-waterfall-data-source.model.ts b/projects/distributed-tracing/src/shared/dashboard/data/graphql/waterfall/trace-waterfall-data-source.model.ts index d25e7448d..42fc36364 100644 --- a/projects/distributed-tracing/src/shared/dashboard/data/graphql/waterfall/trace-waterfall-data-source.model.ts +++ b/projects/distributed-tracing/src/shared/dashboard/data/graphql/waterfall/trace-waterfall-data-source.model.ts @@ -112,6 +112,7 @@ export class TraceWaterfallDataSourceModel extends GraphQlDataSourceModel, errorCount: span.errorCount as number, + traceStartTime: this.startTime as number, logEvents: ((span.logEvents as Dictionary) ?? {}).results })); } diff --git a/projects/distributed-tracing/src/shared/dashboard/widgets/waterfall/waterfall/waterfall-chart.ts b/projects/distributed-tracing/src/shared/dashboard/widgets/waterfall/waterfall/waterfall-chart.ts index 4e2d76ca3..be0668c7c 100644 --- a/projects/distributed-tracing/src/shared/dashboard/widgets/waterfall/waterfall/waterfall-chart.ts +++ b/projects/distributed-tracing/src/shared/dashboard/widgets/waterfall/waterfall/waterfall-chart.ts @@ -23,6 +23,7 @@ export interface WaterfallData { responseBody?: string; tags: Dictionary; errorCount: number; + traceStartTime: number; logEvents?: LogEvent[]; } @@ -41,9 +42,9 @@ export interface WaterfallChartState { export interface LogEvent { [key: string]: unknown; - traceId?: string; - spanId?: string; - attributes?: Dictionary; - timestamp?: string; - summary?: string; + traceId: string; + spanId: string; + attributes: Dictionary; + timestamp: string; + summary: string; } diff --git a/projects/observability/src/shared/dashboard/data/graphql/waterfall/api-trace-waterfall-data-source.model.ts b/projects/observability/src/shared/dashboard/data/graphql/waterfall/api-trace-waterfall-data-source.model.ts index 0c0f325a4..b182e05dd 100644 --- a/projects/observability/src/shared/dashboard/data/graphql/waterfall/api-trace-waterfall-data-source.model.ts +++ b/projects/observability/src/shared/dashboard/data/graphql/waterfall/api-trace-waterfall-data-source.model.ts @@ -117,6 +117,7 @@ export class ApiTraceWaterfallDataSourceModel extends GraphQlDataSourceModel, errorCount: span.errorCount as number, + traceStartTime: this.startTime as number, logEvents: ((span.logEvents as Dictionary) ?? {}).results }; } From 533c90485e6a40603e21aa6b70aec86202deab85 Mon Sep 17 00:00:00 2001 From: Sandeep Kumar Sharma Date: Tue, 4 May 2021 19:36:05 +0530 Subject: [PATCH 03/10] Revert "fix: adding trace start time to span data" This reverts commit 8f0b5c8eb02fc9e6832cbfbf959be38e8bf5bfd5. --- .../src/shared/components/span-detail/span-data.ts | 1 - .../waterfall/trace-waterfall-data-source.model.ts | 1 - .../widgets/waterfall/waterfall/waterfall-chart.ts | 11 +++++------ .../api-trace-waterfall-data-source.model.ts | 1 - 4 files changed, 5 insertions(+), 9 deletions(-) diff --git a/projects/distributed-tracing/src/shared/components/span-detail/span-data.ts b/projects/distributed-tracing/src/shared/components/span-detail/span-data.ts index f259857ed..1cfbe7686 100644 --- a/projects/distributed-tracing/src/shared/components/span-detail/span-data.ts +++ b/projects/distributed-tracing/src/shared/components/span-detail/span-data.ts @@ -14,6 +14,5 @@ export interface SpanData { requestUrl: string; exitCallsBreakup?: Dictionary; startTime?: number; - traceStartTime?: number; logEvents?: LogEvent[]; } diff --git a/projects/distributed-tracing/src/shared/dashboard/data/graphql/waterfall/trace-waterfall-data-source.model.ts b/projects/distributed-tracing/src/shared/dashboard/data/graphql/waterfall/trace-waterfall-data-source.model.ts index 42fc36364..d25e7448d 100644 --- a/projects/distributed-tracing/src/shared/dashboard/data/graphql/waterfall/trace-waterfall-data-source.model.ts +++ b/projects/distributed-tracing/src/shared/dashboard/data/graphql/waterfall/trace-waterfall-data-source.model.ts @@ -112,7 +112,6 @@ export class TraceWaterfallDataSourceModel extends GraphQlDataSourceModel, errorCount: span.errorCount as number, - traceStartTime: this.startTime as number, logEvents: ((span.logEvents as Dictionary) ?? {}).results })); } diff --git a/projects/distributed-tracing/src/shared/dashboard/widgets/waterfall/waterfall/waterfall-chart.ts b/projects/distributed-tracing/src/shared/dashboard/widgets/waterfall/waterfall/waterfall-chart.ts index be0668c7c..4e2d76ca3 100644 --- a/projects/distributed-tracing/src/shared/dashboard/widgets/waterfall/waterfall/waterfall-chart.ts +++ b/projects/distributed-tracing/src/shared/dashboard/widgets/waterfall/waterfall/waterfall-chart.ts @@ -23,7 +23,6 @@ export interface WaterfallData { responseBody?: string; tags: Dictionary; errorCount: number; - traceStartTime: number; logEvents?: LogEvent[]; } @@ -42,9 +41,9 @@ export interface WaterfallChartState { export interface LogEvent { [key: string]: unknown; - traceId: string; - spanId: string; - attributes: Dictionary; - timestamp: string; - summary: string; + traceId?: string; + spanId?: string; + attributes?: Dictionary; + timestamp?: string; + summary?: string; } diff --git a/projects/observability/src/shared/dashboard/data/graphql/waterfall/api-trace-waterfall-data-source.model.ts b/projects/observability/src/shared/dashboard/data/graphql/waterfall/api-trace-waterfall-data-source.model.ts index b182e05dd..0c0f325a4 100644 --- a/projects/observability/src/shared/dashboard/data/graphql/waterfall/api-trace-waterfall-data-source.model.ts +++ b/projects/observability/src/shared/dashboard/data/graphql/waterfall/api-trace-waterfall-data-source.model.ts @@ -117,7 +117,6 @@ export class ApiTraceWaterfallDataSourceModel extends GraphQlDataSourceModel, errorCount: span.errorCount as number, - traceStartTime: this.startTime as number, logEvents: ((span.logEvents as Dictionary) ?? {}).results }; } From a1d101d3f6a7dbe4ee3bcb4202c4b47c141105a9 Mon Sep 17 00:00:00 2001 From: Sandeep Kumar Sharma Date: Tue, 4 May 2021 19:39:40 +0530 Subject: [PATCH 04/10] fix: addressing review comments --- .../widgets/waterfall/waterfall/waterfall-chart.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/projects/distributed-tracing/src/shared/dashboard/widgets/waterfall/waterfall/waterfall-chart.ts b/projects/distributed-tracing/src/shared/dashboard/widgets/waterfall/waterfall/waterfall-chart.ts index 4e2d76ca3..4b2e5d4e8 100644 --- a/projects/distributed-tracing/src/shared/dashboard/widgets/waterfall/waterfall/waterfall-chart.ts +++ b/projects/distributed-tracing/src/shared/dashboard/widgets/waterfall/waterfall/waterfall-chart.ts @@ -41,9 +41,9 @@ export interface WaterfallChartState { export interface LogEvent { [key: string]: unknown; - traceId?: string; - spanId?: string; - attributes?: Dictionary; - timestamp?: string; - summary?: string; + traceId: string; + spanId: string; + attributes: Dictionary; + timestamp: string; + summary: string; } From 8886ae2f46a4294347f54658dc15753878458ea6 Mon Sep 17 00:00:00 2001 From: Sandeep Kumar Sharma Date: Thu, 6 May 2021 10:18:30 +0530 Subject: [PATCH 05/10] fix: addressing review comments --- .../src/shared/components/span-detail/span-data.ts | 4 ++-- .../dashboard/widgets/waterfall/waterfall/waterfall-chart.ts | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/projects/distributed-tracing/src/shared/components/span-detail/span-data.ts b/projects/distributed-tracing/src/shared/components/span-detail/span-data.ts index 1cfbe7686..21f4af466 100644 --- a/projects/distributed-tracing/src/shared/components/span-detail/span-data.ts +++ b/projects/distributed-tracing/src/shared/components/span-detail/span-data.ts @@ -13,6 +13,6 @@ export interface SpanData { tags: Dictionary; requestUrl: string; exitCallsBreakup?: Dictionary; - startTime?: number; - logEvents?: LogEvent[]; + startTime: number; + logEvents: LogEvent[]; } diff --git a/projects/distributed-tracing/src/shared/dashboard/widgets/waterfall/waterfall/waterfall-chart.ts b/projects/distributed-tracing/src/shared/dashboard/widgets/waterfall/waterfall/waterfall-chart.ts index 4b2e5d4e8..472389f54 100644 --- a/projects/distributed-tracing/src/shared/dashboard/widgets/waterfall/waterfall/waterfall-chart.ts +++ b/projects/distributed-tracing/src/shared/dashboard/widgets/waterfall/waterfall/waterfall-chart.ts @@ -23,7 +23,7 @@ export interface WaterfallData { responseBody?: string; tags: Dictionary; errorCount: number; - logEvents?: LogEvent[]; + logEvents: LogEvent[]; } export interface WaterfallDataNode extends WaterfallData, Omit { From 11bee55467aee64f0125ae94f5b31f2dc2a625e9 Mon Sep 17 00:00:00 2001 From: Sandeep Kumar Sharma Date: Thu, 6 May 2021 10:22:57 +0530 Subject: [PATCH 06/10] Revert "fix: addressing review comments" This reverts commit 8886ae2f46a4294347f54658dc15753878458ea6. --- .../src/shared/components/span-detail/span-data.ts | 4 ++-- .../dashboard/widgets/waterfall/waterfall/waterfall-chart.ts | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/projects/distributed-tracing/src/shared/components/span-detail/span-data.ts b/projects/distributed-tracing/src/shared/components/span-detail/span-data.ts index 21f4af466..1cfbe7686 100644 --- a/projects/distributed-tracing/src/shared/components/span-detail/span-data.ts +++ b/projects/distributed-tracing/src/shared/components/span-detail/span-data.ts @@ -13,6 +13,6 @@ export interface SpanData { tags: Dictionary; requestUrl: string; exitCallsBreakup?: Dictionary; - startTime: number; - logEvents: LogEvent[]; + startTime?: number; + logEvents?: LogEvent[]; } diff --git a/projects/distributed-tracing/src/shared/dashboard/widgets/waterfall/waterfall/waterfall-chart.ts b/projects/distributed-tracing/src/shared/dashboard/widgets/waterfall/waterfall/waterfall-chart.ts index 472389f54..4b2e5d4e8 100644 --- a/projects/distributed-tracing/src/shared/dashboard/widgets/waterfall/waterfall/waterfall-chart.ts +++ b/projects/distributed-tracing/src/shared/dashboard/widgets/waterfall/waterfall/waterfall-chart.ts @@ -23,7 +23,7 @@ export interface WaterfallData { responseBody?: string; tags: Dictionary; errorCount: number; - logEvents: LogEvent[]; + logEvents?: LogEvent[]; } export interface WaterfallDataNode extends WaterfallData, Omit { From 77d168d39651547c2af281a220c98086f40a8ebb Mon Sep 17 00:00:00 2001 From: Sandeep Kumar Sharma Date: Thu, 6 May 2021 10:59:17 +0530 Subject: [PATCH 07/10] fix: addressing review comments --- .../src/shared/components/span-detail/span-data.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/distributed-tracing/src/shared/components/span-detail/span-data.ts b/projects/distributed-tracing/src/shared/components/span-detail/span-data.ts index 1cfbe7686..e12757ee5 100644 --- a/projects/distributed-tracing/src/shared/components/span-detail/span-data.ts +++ b/projects/distributed-tracing/src/shared/components/span-detail/span-data.ts @@ -13,6 +13,6 @@ export interface SpanData { tags: Dictionary; requestUrl: string; exitCallsBreakup?: Dictionary; - startTime?: number; + startTime: number; logEvents?: LogEvent[]; } From 129b6a432f6dab1361459d4cc98ac2d23eff9d6c Mon Sep 17 00:00:00 2001 From: Sandeep Kumar Sharma Date: Thu, 6 May 2021 11:32:34 +0530 Subject: [PATCH 08/10] fix: test cases --- .../span-detail/span-detail.component.test.ts | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/projects/distributed-tracing/src/shared/components/span-detail/span-detail.component.test.ts b/projects/distributed-tracing/src/shared/components/span-detail/span-detail.component.test.ts index 00f1d4ed4..430205f59 100644 --- a/projects/distributed-tracing/src/shared/components/span-detail/span-detail.component.test.ts +++ b/projects/distributed-tracing/src/shared/components/span-detail/span-detail.component.test.ts @@ -28,7 +28,8 @@ describe('Span detail component', () => { responseHeaders: { header1: 'value1', header2: 'value2' }, responseBody: '[{"data": 5000}]', tags: { tag1: 'value1', tag2: 'value2' }, - requestUrl: 'test-url' + requestUrl: 'test-url', + startTime: 1604567825671 }; spectator = createHost(``, { @@ -52,7 +53,8 @@ describe('Span detail component', () => { responseHeaders: { header1: 'value1', header2: 'value2' }, responseBody: '[{"data": 5000}]', tags: { tag1: 'value1', tag2: 'value2' }, - requestUrl: 'test-url' + requestUrl: 'test-url', + startTime: 1604567825671 }; spectator = createHost(``, { @@ -77,7 +79,8 @@ describe('Span detail component', () => { responseHeaders: { header1: 'value1', header2: 'value2' }, responseBody: '[{"data": 5000}]', tags: { tag1: 'value1', tag2: 'value2' }, - requestUrl: 'test-url' + requestUrl: 'test-url', + startTime: 1604567825671 }; spectator = createHost(``, { @@ -101,7 +104,8 @@ describe('Span detail component', () => { responseHeaders: {}, responseBody: '', tags: { tag1: 'value1', tag2: 'value2' }, - requestUrl: 'test-url' + requestUrl: 'test-url', + startTime: 1604567825671 }; spectator = createHost(``, { From b45756d29d95432597725346114baaf5832cd03f Mon Sep 17 00:00:00 2001 From: Sandeep Kumar Sharma Date: Thu, 6 May 2021 19:54:16 +0530 Subject: [PATCH 09/10] fix: addressing review comments --- .../trace-waterfall-data-source.model.test.ts | 12 ---------- .../trace-waterfall-data-source.model.ts | 2 -- .../waterfall-chart.component.test.ts | 9 ++++--- .../waterfall/waterfall/waterfall-chart.ts | 5 +--- ...-trace-waterfall-data-source.model.test.ts | 24 +++++++------------ .../api-trace-waterfall-data-source.model.ts | 4 ++-- 6 files changed, 17 insertions(+), 39 deletions(-) diff --git a/projects/distributed-tracing/src/shared/dashboard/data/graphql/waterfall/trace-waterfall-data-source.model.test.ts b/projects/distributed-tracing/src/shared/dashboard/data/graphql/waterfall/trace-waterfall-data-source.model.test.ts index 6db824d68..97b1a9b74 100644 --- a/projects/distributed-tracing/src/shared/dashboard/data/graphql/waterfall/trace-waterfall-data-source.model.test.ts +++ b/projects/distributed-tracing/src/shared/dashboard/data/graphql/waterfall/trace-waterfall-data-source.model.test.ts @@ -98,18 +98,12 @@ describe('Trace Waterfall data source model', () => { }) ], logEventProperties: [ - expect.objectContaining({ - name: 'traceId' - }), expect.objectContaining({ name: 'attributes' }), expect.objectContaining({ name: 'timestamp' }), - expect.objectContaining({ - name: 'spanId' - }), expect.objectContaining({ name: 'summary' }) @@ -175,18 +169,12 @@ describe('Trace Waterfall data source model', () => { }) ], logEventProperties: [ - expect.objectContaining({ - name: 'traceId' - }), expect.objectContaining({ name: 'attributes' }), expect.objectContaining({ name: 'timestamp' }), - expect.objectContaining({ - name: 'spanId' - }), expect.objectContaining({ name: 'summary' }) diff --git a/projects/distributed-tracing/src/shared/dashboard/data/graphql/waterfall/trace-waterfall-data-source.model.ts b/projects/distributed-tracing/src/shared/dashboard/data/graphql/waterfall/trace-waterfall-data-source.model.ts index d25e7448d..30fccf333 100644 --- a/projects/distributed-tracing/src/shared/dashboard/data/graphql/waterfall/trace-waterfall-data-source.model.ts +++ b/projects/distributed-tracing/src/shared/dashboard/data/graphql/waterfall/trace-waterfall-data-source.model.ts @@ -61,10 +61,8 @@ export class TraceWaterfallDataSourceModel extends GraphQlDataSourceModel { responseHeaders: {}, responseBody: 'Response Body', tags: {}, - errorCount: 0 + errorCount: 0, + logEvents: [] }, { id: 'second-id', @@ -52,7 +53,8 @@ describe('Waterfall Chart component', () => { responseHeaders: {}, responseBody: '', tags: {}, - errorCount: 0 + errorCount: 0, + logEvents: [] }, { id: 'third-id', @@ -73,7 +75,8 @@ describe('Waterfall Chart component', () => { responseHeaders: {}, responseBody: '', tags: {}, - errorCount: 0 + errorCount: 0, + logEvents: [] } ]; diff --git a/projects/distributed-tracing/src/shared/dashboard/widgets/waterfall/waterfall/waterfall-chart.ts b/projects/distributed-tracing/src/shared/dashboard/widgets/waterfall/waterfall/waterfall-chart.ts index 4b2e5d4e8..c5077dc3a 100644 --- a/projects/distributed-tracing/src/shared/dashboard/widgets/waterfall/waterfall/waterfall-chart.ts +++ b/projects/distributed-tracing/src/shared/dashboard/widgets/waterfall/waterfall/waterfall-chart.ts @@ -23,7 +23,7 @@ export interface WaterfallData { responseBody?: string; tags: Dictionary; errorCount: number; - logEvents?: LogEvent[]; + logEvents: LogEvent[]; } export interface WaterfallDataNode extends WaterfallData, Omit { @@ -40,9 +40,6 @@ export interface WaterfallChartState { } export interface LogEvent { - [key: string]: unknown; - traceId: string; - spanId: string; attributes: Dictionary; timestamp: string; summary: string; diff --git a/projects/observability/src/shared/dashboard/data/graphql/waterfall/api-trace-waterfall-data-source.model.test.ts b/projects/observability/src/shared/dashboard/data/graphql/waterfall/api-trace-waterfall-data-source.model.test.ts index 4e5beb29c..425196294 100644 --- a/projects/observability/src/shared/dashboard/data/graphql/waterfall/api-trace-waterfall-data-source.model.test.ts +++ b/projects/observability/src/shared/dashboard/data/graphql/waterfall/api-trace-waterfall-data-source.model.test.ts @@ -104,18 +104,12 @@ describe('Api Trace Waterfall data source model', () => { }) ], logEventProperties: [ - expect.objectContaining({ - name: 'traceId' - }), expect.objectContaining({ name: 'attributes' }), expect.objectContaining({ name: 'timestamp' }), - expect.objectContaining({ - name: 'spanId' - }), expect.objectContaining({ name: 'summary' }) @@ -182,18 +176,12 @@ describe('Api Trace Waterfall data source model', () => { }) ], logEventProperties: [ - expect.objectContaining({ - name: 'traceId' - }), expect.objectContaining({ name: 'attributes' }), expect.objectContaining({ name: 'timestamp' }), - expect.objectContaining({ - name: 'spanId' - }), expect.objectContaining({ name: 'summary' }) @@ -229,7 +217,8 @@ describe('Api Trace Waterfall data source model', () => { displaySpanName: 'Span Name 1', protocolName: 'Protocol Name 1', type: SpanType.Entry, - spanTags: {} + spanTags: {}, + logEvents: [] }, { [spanIdKey]: 'second-id', @@ -241,7 +230,8 @@ describe('Api Trace Waterfall data source model', () => { displaySpanName: 'Span Name 2', protocolName: 'Protocol Name 2', type: SpanType.Exit, - spanTags: {} + spanTags: {}, + logEvents: [] } ] }) @@ -261,7 +251,8 @@ describe('Api Trace Waterfall data source model', () => { apiName: 'Span Name 1', protocolName: 'Protocol Name 1', spanType: SpanType.Entry, - tags: {} + tags: {}, + logEvents: [] }, { id: 'second-id', @@ -277,7 +268,8 @@ describe('Api Trace Waterfall data source model', () => { apiName: 'Span Name 2', protocolName: 'Protocol Name 2', spanType: SpanType.Exit, - tags: {} + tags: {}, + logEvents: [] } ] }); diff --git a/projects/observability/src/shared/dashboard/data/graphql/waterfall/api-trace-waterfall-data-source.model.ts b/projects/observability/src/shared/dashboard/data/graphql/waterfall/api-trace-waterfall-data-source.model.ts index 0c0f325a4..698263d10 100644 --- a/projects/observability/src/shared/dashboard/data/graphql/waterfall/api-trace-waterfall-data-source.model.ts +++ b/projects/observability/src/shared/dashboard/data/graphql/waterfall/api-trace-waterfall-data-source.model.ts @@ -67,7 +67,7 @@ export class ApiTraceWaterfallDataSourceModel extends GraphQlDataSourceModel { @@ -117,7 +117,7 @@ export class ApiTraceWaterfallDataSourceModel extends GraphQlDataSourceModel, errorCount: span.errorCount as number, - logEvents: ((span.logEvents as Dictionary) ?? {}).results + logEvents: ((span.logEvents as Dictionary) ?? {}).results ?? [] }; } } From 01b9bbc9d500674c9b03766e4685f01b8941c90b Mon Sep 17 00:00:00 2001 From: Sandeep Kumar Sharma Date: Thu, 6 May 2021 19:57:13 +0530 Subject: [PATCH 10/10] fix: lint errors --- .../widgets/waterfall/waterfall/waterfall-chart.service.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/distributed-tracing/src/shared/dashboard/widgets/waterfall/waterfall/waterfall-chart.service.ts b/projects/distributed-tracing/src/shared/dashboard/widgets/waterfall/waterfall/waterfall-chart.service.ts index 0d7ae6748..e98e18f20 100644 --- a/projects/distributed-tracing/src/shared/dashboard/widgets/waterfall/waterfall/waterfall-chart.service.ts +++ b/projects/distributed-tracing/src/shared/dashboard/widgets/waterfall/waterfall/waterfall-chart.service.ts @@ -43,7 +43,7 @@ export class WaterfallChartService { serviceName: datum.serviceName, protocolName: datum.protocolName, hasError: datum.errorCount > 0, - hasLogs: datum.logEvents && datum.logEvents.length > 0 + hasLogs: datum.logEvents.length > 0 }, $$iconType: this.iconLookupService.forSpanType(datum.spanType)!, getChildren: () => of([]),