Skip to content

Vendoring broke opentracing types / uses different libs #8523

Description

@BridgeAR

Original issue report

opentracing doesn't seem to like dd-trace's Tracer.

For example:

import tracer from "dd-trace";
import * as opentracing from "opentracing";

tracer.init();

opentracing.initGlobalTracer(tracer);

Throws the following compile error for me:

TSError: ⨯ Unable to compile TypeScript:
src/handlers/tracing/open-tracing.ts(39,32): error TS2345: Argument of type 'import("/Users/me/project/node_modules/dd-trace/docs/index").Tracer' is not assignable to parameter of type 'import("/Users/me/project/node_modules/opentracing/lib/tracer").Tracer'.
  Types of property 'startSpan' are incompatible.
    Type '(name: string, options?: import("/Users/me/project/node_modules/dd-trace/node_modules/opentracing/lib/tracer").SpanOptions | undefined) => import("/Users/me/project/node_modules/dd-trace/docs/index").Span' is not assignable to type '(name: string, options?: import("/Users/me/project/node_modules/opentracing/lib/tracer").SpanOptions | undefined) => import("/Users/me/project/node_modules/opentracing/lib/span").Span'.
      Types of parameters 'options' and 'options' are incompatible.
        Type 'import("/Users/me/project/node_modules/opentracing/lib/tracer").SpanOptions | undefined' is not assignable to type 'import("/Users/me/project/node_modules/dd-trace/node_modules/opentracing/lib/tracer").SpanOptions | undefined'.
          Type 'import("/Users/me/project/node_modules/opentracing/lib/tracer").SpanOptions' is not assignable to type 'import("/Users/me/project/node_modules/dd-trace/node_modules/opentracing/lib/tracer").SpanOptions'.
            Types of property 'references' are incompatible.
              Type 'import("/Users/me/project/node_modules/opentracing/lib/reference").default[] | undefined' is not assignable to type 'import("/Users/me/project/node_modules/dd-trace/node_modules/opentracing/lib/reference").default[] | undefined'.
                Type 'import("/Users/me/project/node_modules/opentracing/lib/reference").default[]' is not assignable to type 'import("/Users/me/project/node_modules/dd-trace/node_modules/opentracing/lib/reference").default[]'.
                  Type 'import("/Users/me/project/node_modules/opentracing/lib/reference").default' is not assignable to type 'import("/Users/me/project/node_modules/dd-trace/node_modules/opentracing/lib/reference").default'.
                    Property '_type' is protected but type 'Reference' is not a class derived from 'Reference'.
dependency version
typescript 3.3.3333
opentracing 0.14.3
dd-trace 0.9.2

Glad to see typescript getting some love from dd-trace 🙂

This is happening again to me after #69581, with the exact same error message :-(

Using

import { initGlobalTracer } from 'dd-trace/vendor/dist/opentracing';

instead of

import { initGlobalTracer } from 'opentracing';

solves the type error, but I'm confident that this is the wrong solution. Alternatively I can write

opentracing.initGlobalTracer(tracer as unknown as opentracing.OpenTracer);

but that's just as ugly.

1: concretely, it did work with dd-trace@5.80.0 and now fails after upgrading to dd-trace@5.87.0.

Originally posted by @ab-pm in #464

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions