Skip to content

@sentry/nestjs SentryTraced decorator does not retain metadata #14384

Closed
@nathan-knight

Description

@nathan-knight

Is there an existing issue for this?

How do you use Sentry?

Sentry Saas (sentry.io)

Which SDK are you using?

@sentry/nestjs

SDK Version

8.38.0

Framework Version

NestJS 10.4.2

Link to Sentry event

No response

Reproduction Example/SDK Setup

No response

Steps to Reproduce

If you apply the SentryTraced decorator to a function, it replaces it with a new function that retains the name of the original function but does not copy over the metadata using reflect-metadata that may have been applied by another decorator (which is a common pattern in NestJS) such as SetMetadata from @nestjs/common.

Expected Result

After the decorator assigns decorator.value, it should do something like:

const metadataKeys = Reflect.getMetadataKeys(originalMethod);
for (const metadataKey of metadataKeys) {
    const value = Reflect.getMetadata(metadataKey, originalMethod);
    Reflect.defineMetadata(metadataKey, value, descriptor.value);
}

I have applied a patch to get things working for us that does exactly this

Actual Result

It does not copy the metadata so other functionality that relies on it breaks.

Metadata

Metadata

Assignees

Labels

Package: nestjsIssues related to the Sentry Nestjs SDK

Type

Projects

Status

No status

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions