Nestjs-OpenTelemetry icon indicating copy to clipboard operation
Nestjs-OpenTelemetry copied to clipboard

Typescript issues like "Type 'BatchSpanProcessor' is not assignable to type 'SpanProcessor'" since update to last OpenTelemetry packages

Open jitbasemartin opened this issue 1 year ago • 8 comments

Nestjs-OpenTelemetry seems not working with last opentelemetry packages like @opentelemetry/sdk-trace-base

I try to update Nestjs-OpenTelemetry to offer a fix but tests are not working

Here a sample of typescript issues:

error TS2322: Type 'BatchSpanProcessor' is not assignable to type 'SpanProcessor'.
  Types of property 'onStart' are incompatible.
    Type '(_span: Span, _parentContext: Context) => void' is not assignable to type '(span: Span, parentContext: Context) => void'.
      Types of parameters '_span' and 'span' are incompatible.
        Type 'import("node_modules/@opentelemetry/sdk-node/node_modules/@opentelemetry/sdk-trace-base/build/src/Span").Span' is not assignable to type 'import("node_modules/@opentelemetry/sdk-trace-base/build/src/Span").Span'.
          Types have separate declarations of a private property '_spanContext'.

error TS2322: Type 'HttpInstrumentation' is not assignable to type 'InstrumentationOption'.
  Type 'HttpInstrumentation' is not assignable to type 'Instrumentation'.
    Types of property 'setMeterProvider' are incompatible.
      Type '(meterProvider: import("node_modules/@opentelemetry/otlp-transformer/node_modules/@opentelemetry/api-metrics/build/src/types/MeterProvider").MeterProvider) => void' is not assignable to type '(meterProvider: import("node_modules/@opentelemetry/api-metrics/build/src/types/MeterProvider").MeterProvider) => void'.
        Types of parameters 'meterProvider' and 'meterProvider' are incompatible.
          Type 'import("node_modules/@opentelemetry/api-metrics/build/src/types/MeterProvider").MeterProvider' is not assignable to type 'import("node_modules/@opentelemetry/otlp-transformer/node_modules/@opentelemetry/api-metrics/build/src/types/MeterProvider").MeterProvider'.
            The types returned by 'getMeter(...)' are incompatible between these types.
              Type 'Meter' is missing the following properties from type 'Meter': addBatchObservableCallback, removeBatchObservableCallback

jitbasemartin avatar Jun 06 '22 16:06 jitbasemartin

Just ran into the same issue. Workaround is to stick the @opentelemetry packages on 1.x, as suggested here.

rtuin avatar Jun 13 '22 20:06 rtuin

The latest packages should be working together. Otel releases happen for all packages in lockstep now to avoid this problem in the future.

dyladan avatar Jun 28 '22 17:06 dyladan

Is it possible to update this package to last versions of Otel ? I tried to run test without changes of this package and I got Jest timeout (even if I increase it)

jitbasemartin avatar Aug 18 '22 19:08 jitbasemartin

I have all the latest packages and still see the issue: @opentelemetry/api": "^1.1.0", "@opentelemetry/core": "^1.5.0", "@opentelemetry/sdk-trace-base": "^1.5.0", "@opentelemetry/auto-instrumentations-node": "^0.31.2", "@opentelemetry/exporter-trace-otlp-http": "^0.31.0", "@opentelemetry/instrumentation": "^0.31.0", "@opentelemetry/resources": "^1.5.0", "@opentelemetry/sdk-node": "^0.31.0", "@opentelemetry/sdk-trace-node": "^1.5.0", "@opentelemetry/sdk-trace-web": "^1.5.0", "@opentelemetry/semantic-conventions": "^1.5.0", "@opentelemetry/tracing": "^0.24.0",

benaichouchemm avatar Aug 24 '22 06:08 benaichouchemm

I had a similar issue (SimpleSpanProcessor is not assignable to type SpanProcessor). Resolved it by adding this block to my package.json -

"resolutions": {
     "@opentelemetry/sdk-trace-base": "^1.6.0"
}

akshatflx avatar Sep 01 '22 15:09 akshatflx

The package @opentelemetry/tracing is deprecated and will definitely not work with 1.5.0 or 0.31.0 packages

1.5.0 is not the latest for those stable packages, but 1.6.0 is.

dyladan avatar Sep 01 '22 15:09 dyladan

A full list of otel dependencies in package.json is definitely helpful when trying to debug these issues

dyladan avatar Sep 01 '22 15:09 dyladan

Yeah changing 1.6.0 solved this issue, thanks.

benaichouchemm avatar Sep 04 '22 06:09 benaichouchemm

#49

MetinSeylan avatar Oct 15 '22 17:10 MetinSeylan

Using "@opentelemetry/exporter-zipkin": "^1.7.0" "@opentelemetry/sdk-trace-base": "^1.7.0" should work now, since the "@metinseylan/nestjs-opentelemetry": "^3.0.0" uses these versions. Try removing the existing packages from cli npm uninstall @opentelemetry/sdk-trace-base @opentelemetry/exporter-zipkin and install with defined versions npm i @opentelemetry/[email protected] @opentelemetry/[email protected]

faruk-arslan avatar Mar 01 '23 08:03 faruk-arslan