-
Notifications
You must be signed in to change notification settings - Fork 619
Closed
Labels
bugSomething isn't workingSomething isn't workingpkg:instrumentation-pgpriority:p1Bugs which cause problems in end-user applications such as crashes, data inconsistenciesBugs which cause problems in end-user applications such as crashes, data inconsistencies
Description
What version of OpenTelemetry are you using?
@opentelemetry/instrumentation-pg: 0.45.1
What version of Node are you using?
v20.15.1
What did you do?
Used @opentelemetry/instrumentation-pg with TypeORM and pg-pool. Received warning about possible memory leak, which happens since listeners are constantly attached for each query. Partial stack trace:
MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 connect listeners added to [BoundPool]. MaxListeners is 10. Use emitter.setMaxListeners() to increase limit
at genericNodeError (node:internal/errors:984:15)
at wrappedFn (node:internal/errors:538:14)
at _addListener (node:events:593:17)
at BoundPool.addListener (node:events:611:10)
at BoundPool.connect (c:/test/node_modules\@opentelemetry\instrumentation-pg\src\instrumentation.ts:461:12)
at <anonymous> (c:/test/node_modules\typeorm\driver\src\driver\postgres\PostgresDriver.ts:1175:25)
at new Promise (<anonymous>)
at PostgresDriver.obtainMasterConnection (c:/test/node_modules\typeorm\driver\src\driver\postgres\PostgresDriver.ts:1174:16)
at PostgresQueryRunner.connect (c:/test/node_modules\typeorm\driver\src\driver\postgres\PostgresQueryRunner.ts:111:18)
at PostgresQueryRunner.query (c:/test/node_modules\typeorm\driver\src\driver\postgres\PostgresQueryRunner.ts:248:47)
....
What did you expect to see?
No memory leak.
Additional context
This issue was introduced in this commit - 12adb43#diff-1360de1aed58c38c5cbd3a1759a8af761049ea2c562a477964623fb2358b2730R379
Since pg.Pool.connect is called for each query to obtain connection, duplicated event listeners are attached each time, which would probably also lead to wrong metrics data.
It seems in order to fix it, additional check is needed to make sure event listeners are added only on a first connect call.
astrot1988, clintonb, thecopy and Frodigomaryliag
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't workingpkg:instrumentation-pgpriority:p1Bugs which cause problems in end-user applications such as crashes, data inconsistenciesBugs which cause problems in end-user applications such as crashes, data inconsistencies