Add span parameter to Task.getTracingPropagation. Pass proper span to getTracingPropagation calls in Task methods to propagate the proper spanId (#91)

This commit is contained in:
javibookline
2022-03-31 13:13:12 +02:00
committed by GitHub
parent 4284797e85
commit 6072dcf11c

View File

@@ -90,8 +90,11 @@ class Task extends Emitter {
return {span, ctx}; return {span, ctx};
} }
getTracingPropagation(encoding) { getTracingPropagation(encoding, span) {
// TODO: support encodings beyond b3 https://github.com/openzipkin/b3-propagation // TODO: support encodings beyond b3 https://github.com/openzipkin/b3-propagation
if (span) {
return `${span.spanContext().traceId}-${span.spanContext().spanId}-1`;
}
if (this.span) { if (this.span) {
return `${this.span.spanContext().traceId}-${this.span.spanContext().spanId}-1`; return `${this.span.spanContext().traceId}-${this.span.spanContext().spanId}-1`;
} }
@@ -137,9 +140,9 @@ class Task extends Emitter {
async performAction(results, expectResponse = true) { async performAction(results, expectResponse = true) {
if (this.actionHook) { if (this.actionHook) {
const params = results ? Object.assign(results, this.cs.callInfo.toJSON()) : this.cs.callInfo.toJSON(); const params = results ? Object.assign(results, this.cs.callInfo.toJSON()) : this.cs.callInfo.toJSON();
const b3 = this.getTracingPropagation();
const httpHeaders = b3 && {b3};
const span = this.startSpan('verb:hook', {'hook.url': this.actionHook}); const span = this.startSpan('verb:hook', {'hook.url': this.actionHook});
const b3 = this.getTracingPropagation('b3', span);
const httpHeaders = b3 && {b3};
span.setAttributes({'http.body': JSON.stringify(params)}); span.setAttributes({'http.body': JSON.stringify(params)});
try { try {
const json = await this.cs.requestor.request('verb:hook', this.actionHook, params, httpHeaders); const json = await this.cs.requestor.request('verb:hook', this.actionHook, params, httpHeaders);
@@ -162,9 +165,9 @@ class Task extends Emitter {
} }
async performHook(cs, hook, results) { async performHook(cs, hook, results) {
const b3 = this.getTracingPropagation();
const httpHeaders = b3 && {b3};
const span = this.startSpan('verb:hook', {'hook.url': hook}); const span = this.startSpan('verb:hook', {'hook.url': hook});
const b3 = this.getTracingPropagation('b3', span);
const httpHeaders = b3 && {b3};
span.setAttributes({'http.body': JSON.stringify(results)}); span.setAttributes({'http.body': JSON.stringify(results)});
try { try {
const json = await cs.requestor.request('verb:hook', hook, results, httpHeaders); const json = await cs.requestor.request('verb:hook', hook, results, httpHeaders);