generateJaegerSpan(span) {
		const serviceName = span.service ? span.service.fullName : "no-service";
		const tracer = this.getTracer(serviceName);

		let parentCtx;
		if (span.parentID) {
			parentCtx = new Jaeger.SpanContext(
				this.convertTraceID(span.traceID), // traceId,
				this.convertSpanID(span.parentID), // spanId,
				null, // parentId,
				null, // traceIdStr
				null, // spanIdStr
				null, // parentIdStr
				1, // flags
				{}, // baggage
				"" // debugId
			);
		}

		const jaegerSpan = tracer.startSpan(span.name, {
			startTime: span.startTime,
			childOf: parentCtx,
			tags: this.flattenTags(
				_.defaultsDeep(
					{
						"span.type": span.type
					},
					span.tags,
					this.defaultTags
				)
			)
		});

		this.addLogs(jaegerSpan, span.logs);

		this.addTags(jaegerSpan, "service", serviceName);
		this.addTags(
			jaegerSpan,
			Jaeger.opentracing.Tags.SPAN_KIND,
			Jaeger.opentracing.Tags.SPAN_KIND_RPC_SERVER
		);

		const sc = jaegerSpan.context();
		sc.traceId = this.convertTraceID(span.traceID);
		sc.spanId = this.convertSpanID(span.id);

		if (span.error) {
			this.addTags(jaegerSpan, Jaeger.opentracing.Tags.ERROR, true);
			this.addTags(jaegerSpan, "error", this.errorToObject(span.error));
		}

		jaegerSpan.finish(span.finishTime);

		return jaegerSpan;
	}
Create Jaeger tracing span

@param {Span} span
@returns {Object}