Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ESM custom loader loading code twice #3845

Open
mgagliardo91 opened this issue Dec 4, 2023 · 3 comments
Open

ESM custom loader loading code twice #3845

mgagliardo91 opened this issue Dec 4, 2023 · 3 comments
Labels
bug Something isn't working

Comments

@mgagliardo91
Copy link

mgagliardo91 commented Dec 4, 2023

With the recent release of Node v18.19.0, the dd-trace-js custom ESM loader is loading our application twice, causing it to fail with a port already bound error (this is an express application).

It appears the the v18.19.0 release added some breaking changes that would alter the way the dd-trace-js loader hook works. They indicate that v20 moves loaders to their own thread, which sounds like the culprit, but I'm unsure why that would affect v18. See

I have tried to switch to use the --import syntax, as outlined here, however, this still results in duplicate loading.

I am unsure whether this is a bug with Node v18.19.0, or if the breaking change is in fact correct and dd-trace-js loader hook needs to be updated to reflect the changes.

Expected behaviour
Loading dd-trace-js using the custom ESM loader node --loader=dd-trace/loader-hook.mjs properly starts our application, once.

Actual behaviour
Custom loader loads our application twice, which triggers a port conflict given that its trying to start two threads of the same application.

Steps to reproduce

  1. Create a simple express app using ESM
  2. Instrument with dd-trace-js custom loader
  3. Run with Node v18.19.0

Environment

  • Operation system: node:18-alpine
  • Node.js version: v18.19.0
  • Tracer version: 4.20.0
  • Agent version:
  • Relevant library versions:
@mgagliardo91 mgagliardo91 added the bug Something isn't working label Dec 4, 2023
@mgagliardo91
Copy link
Author

For now, we will pin our docker node version to v18.18.0; however, we hope to resolve this without leaving the pin in place.

@Rowanto
Copy link

Rowanto commented Dec 5, 2023

Same issue. Pinning to 18.18 (node:18.18-alpine) solves the issue temporarily as outlined by @mgagliardo91

@khanayan123
Copy link
Collaborator

Hi is this still an issue?

the fix was applied in this PR: DataDog/import-in-the-middle#44

& was released with this release: https://github.com/DataDog/import-in-the-middle/releases/tag/v1.6.0

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

3 participants