Skip to content

Regression for async consumers withamqplib #3509

@antmarot

Description

@antmarot

Description

New instrumentation of amqplib introduces a regression when the consumer callback is doing an async work.

channel.consume(
      "queueName",
      async (msg) => {
            await doWork(msg);
      },
)

In version 13.3.3 (last before reimplementation of the instrumentation), everything happening asynchronously during the callback execution is properly reported in newrelic (eg. database accesses, ...). If the callback takes 3 seconds to perform, that duration is properly reported as the "response time".

With any version after it, including the recent 13.6.4, it seems like the callback is not awaited, nor the transaction terminated only on eventual ack or nack calls, eg. database accesses are not reported, and the "response time" is in the microseconds scale.

Expected Behavior

No regression (without major version bump).

Transaction to properly reflect the workload being done asynchronously on message consumption.

Troubleshooting or NR Diag results

Steps to Reproduce

Your Environment

  • ex: Browser name and version:
  • ex: Node version:
  • ex: Operating System and version:

Additional context

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

Status

Done: Issues recently completed

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions