Skip to content
This repository was archived by the owner on Oct 3, 2023. It is now read-only.

Commit 4a110af

Browse files
chord: merge commit
2 parents 6c6c036 + aeb0264 commit 4a110af

3 files changed

Lines changed: 25 additions & 18 deletions

File tree

packages/opencensus-core/src/trace/model/root-span.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import { Span } from './span'
1818
import { Clock } from '../../internal/clock'
1919
import * as uuid from 'uuid';
2020
import { debug } from '../../internal/util'
21-
import { SpanBaseModel, TraceContext, OnEndSpanEventListener } from '../types/tracetypes'
21+
import { SpanBaseModel, TraceContext, OnEndSpanEventListener, TraceOptions } from '../types/tracetypes'
2222
import { Tracer } from './tracer';
2323

2424
export class RootSpan extends SpanBaseModel implements OnEndSpanEventListener {
@@ -27,10 +27,12 @@ export class RootSpan extends SpanBaseModel implements OnEndSpanEventListener {
2727
private _spans: Span[];
2828
private _traceId: string;
2929

30-
constructor(tracer: Tracer, context?: TraceContext ) {
30+
//TODO - improve root name setup
31+
constructor(tracer: Tracer, context?: TraceOptions ) {
3132
super()
3233
this.tracer = tracer;
33-
this._traceId = context&&context.traceId?context.traceId:(uuid.v4().split('-').join(''));
34+
this._traceId = context&&context.traceContext&&context.traceContext.traceId?context.traceContext.traceId:(uuid.v4().split('-').join(''));
35+
this.name = context&&context.name?context.name:'undefined';
3436
this._spans = [];
3537
}
3638

@@ -69,7 +71,7 @@ export class RootSpan extends SpanBaseModel implements OnEndSpanEventListener {
6971
}
7072

7173
public onEndSpan(span: Span) {
72-
debug('%s notified ending by %o',{id: span.id, name: span.name})
74+
debug('ended span notified %o', {id: span.id, name: span.name})
7375
}
7476

7577
public startSpan(name: string, type: string) {

packages/opencensus-core/src/trace/model/tracer.ts

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ import { Span } from './span'
2020
import { debug } from '../../internal/util'
2121
import { Stackdriver } from '../../exporters/stackdriver/stackdriver'
2222
import { StackdriverOptions } from '../../exporters/stackdriver/options'
23-
import { TraceContext, OnEndSpanEventListener } from '../types/tracetypes';
24-
import { TracerConfig, defaultConfig } from '../tracing';
23+
import { TraceContext, TraceOptions, OnEndSpanEventListener } from '../types/tracetypes';
24+
import { TracerConfig, defaultConfig } from '../tracing';
2525

2626
export type Func<T> = (...args: any[]) => T;
2727

@@ -66,36 +66,36 @@ export class Tracer implements OnEndSpanEventListener {
6666
return this._active;
6767
}
6868

69-
public startRootSpan(context?: TraceContext): RootSpan {
70-
let newTrace = new RootSpan(this, context);
71-
this.setCurrentRootSpan(newTrace);
72-
newTrace.start();
73-
return newTrace;
69+
public startRootSpan<T>(options: TraceOptions, fn: (root: RootSpan) => T): T {
70+
debug('starting root span: %o', options)
71+
return this.contextManager.runAndReturn((root) => {
72+
let newRoot = new RootSpan(this, options);
73+
this.setCurrentRootSpan(newRoot);
74+
newRoot.start();
75+
return fn(newRoot);
76+
});
7477
}
7578

7679

7780
public onEndSpan(root:RootSpan): void {
78-
if (!this.currentRootSpan) {
81+
if (!root) {
7982
return debug('cannot end trace - no active trace found')
8083
}
8184
if(this.currentRootSpan != root) {
82-
return debug('currentRootSpan != root on notifyEnd. Possbile implementation bug.')
85+
debug('currentRootSpan != root on notifyEnd. Need more investigation.')
8386
}
84-
this.notifyEndSpan(this.currentRootSpan);
87+
this.notifyEndSpan(root);
8588
//this.clearCurrentTrace();
8689
}
8790

88-
//TODO: review
89-
public runInContex<T>(fn: Func<T>): T {
90-
return this.contextManager.runAndReturn (fn)
91-
}
9291

9392
public registerEndSpanListener(listner: OnEndSpanEventListener) {
9493
this.eventListeners.push(listner);
9594
}
9695

9796
private notifyEndSpan(root: RootSpan) {
9897
if (this.active) {
98+
debug ('starting to notify listeners the end of rootspans')
9999
if(this.eventListeners&&this.eventListeners.length >0) {
100100
this.eventListeners.forEach((listener) => listener.onEndSpan(root))
101101
}

packages/opencensus-core/src/trace/types/tracetypes.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,11 @@ export interface TraceContext {
2727
options?: number
2828
}
2929

30+
export interface TraceOptions {
31+
name:string;
32+
traceContext?:TraceContext;
33+
}
34+
3035
export interface OnEndSpanEventListener {
3136
onEndSpan(span: SpanBaseModel): void;
3237
}

0 commit comments

Comments
 (0)