Skip to content

OTEL spans being ended multiple times causing "Operation attempted on ended Span" errors #2119

@n3xt-alexy

Description

@n3xt-alexy

Please make sure you have searched for information in the following guides.

A screenshot that you have tested with "Try this API".

The google-cloud/pubsub library creates a new otel span: rpcSpan encapsulating multiple messages being published. However in the finally block it calls rpcSpan?.end() within a loop that is handling each individual message span, causing span end errors when there are more than one message present. src/publisher/message-queues.ts

Link to the code that reproduces this issue. A link to a public Github Repository or gist with a minimal reproduction.

A step-by-step description of how to reproduce the issue, based on the linked reproduction.

Can not execute the operation on ended Span {traceId: 48c28ff6f9fee16da62f142e62fe847a, spanId: b4256fc107bc37ce}
topic_name send 48c28ff6f9fee16da62f142e62fe847a-b4256fc107bc37ce - You can only call end() on a span once.

A clear and concise description of what the bug is, and what you expected to happen.

The google-cloud/pubsub library creates a new otel span: rpcSpan encapsulating multiple messages being published. However in the finally block it calls rpcSpan?.end() within a loop that is handling each individual message span, causing span end errors when there are more than one message present.

rpcSpan?.end() should live outside of the forEach loop

      rpcSpan?.end();
      messages.forEach(m => {  
        tracing.PubsubEvents.publishEnd(m);
        m.parentSpan?.end();
      });

A clear and concise description WHY you expect this behavior, i.e., was it a recent change, there is documentation that points to this behavior, etc. **

"You can only call end() on a span once." errors should not happen

Metadata

Metadata

Assignees

No one assigned

    Labels

    api: pubsubIssues related to the googleapis/nodejs-pubsub API.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions