js icon indicating copy to clipboard operation
js copied to clipboard

[Bug]: Possible EventTarget memory leak detected

Open nonsintetic opened this issue 11 months ago • 0 comments

Hardware

T-Lora v1

Connection Type

HTTP

Firmware Version

2.5.4.8d288d5

Description

Running the library on NodeJS 18.20.5. After a minute or so I keep getting messages about MaxListenersExceededWarning.

It seems to be related to the usage of AbortController() and a bug in NodeJS below version 20. Having a single instance of AbortController that is re-used for all fetch requests will cause the error I'm getting. A workaround would be having a controller on each request and clearing it once it's done its job.

related: https://github.com/nodejs/node/issues/52203 https://github.com/nodejs/undici/issues/3157

Relevant console output

(node:4940) MaxListenersExceededWarning: Possible EventTarget memory leak detected. 102 abort listeners added to [AbortSignal]. Use events.setMaxListeners() to increase limit
(node:4940) MaxListenersExceededWarning: Possible EventTarget memory leak detected. 103 abort listeners added to [AbortSignal]. Use events.setMaxListeners() to increase limit
(node:4940) MaxListenersExceededWarning: Possible EventTarget memory leak detected. 104 abort listeners added to [AbortSignal]. Use events.setMaxListeners() to increase limit
(node:4940) MaxListenersExceededWarning: Possible EventTarget memory leak detected. 105 abort listeners added to [AbortSignal]. Use events.setMaxListeners() to increase limit
(node:4940) MaxListenersExceededWarning: Possible EventTarget memory leak detected. 106 abort listeners added to [AbortSignal]. Use events.setMaxListeners() to increase limit
(node:4940) MaxListenersExceededWarning: Possible EventTarget memory leak detected. 107 abort listeners added to [AbortSignal]. Use events.setMaxListeners() to increase limit
(node:4940) MaxListenersExceededWarning: Possible EventTarget memory leak detected. 108 abort listeners added to [AbortSignal]. Use events.setMaxListeners() to increase limit
(node:4940) MaxListenersExceededWarning: Possible EventTarget memory leak detected. 109 abort listeners added to [AbortSignal]. Use events.setMaxListeners() to increase limit
(node:4940) MaxListenersExceededWarning: Possible EventTarget memory leak detected. 110 abort listeners added to [AbortSignal]. Use events.setMaxListeners() to increase limit
(node:4940) MaxListenersExceededWarning: Possible EventTarget memory leak detected. 111 abort listeners added to [AbortSignal]. Use events.setMaxListeners() to increase limit
09:56:46:911    TRACE   [iMeshDevice:HttpConnection]    HandleMeshPacket 📦 Received POSITION_APP packet
(node:4940) MaxListenersExceededWarning: Possible EventTarget memory leak detected. 112 abort listeners added to [AbortSignal]. Use events.setMaxListeners() to increase limit
(node:4940) MaxListenersExceededWarning: Possible EventTarget memory leak detected. 113 abort listeners added to [AbortSignal]. Use events.setMaxListeners() to increase limit
(node:4940) MaxListenersExceededWarning: Possible EventTarget memory leak detected. 114 abort listeners added to [AbortSignal]. Use events.setMaxListeners() to increase limit
09:56:52:908    TRACE   [iMeshDevice:HttpConnection]    HandleMeshPacket 📦 Received POSITION_APP packet
(node:4940) MaxListenersExceededWarning: Possible EventTarget memory leak detected. 115 abort listeners added to [AbortSignal]. Use events.setMaxListeners() to increase limit
(node:4940) MaxListenersExceededWarning: Possible EventTarget memory leak detected. 116 abort listeners added to [AbortSignal]. Use events.setMaxListeners() to increase limit
09:56:55:906    TRACE   [iMeshDevice:HttpConnection]    HandleMeshPacket 📦 Received TELEMETRY_APP packet
(node:4940) MaxListenersExceededWarning: Possible EventTarget memory leak detected. 117 abort listeners added to [AbortSignal]. Use events.setMaxListeners() to increase limit
(node:4940) MaxListenersExceededWarning: Possible EventTarget memory leak detected. 118 abort listeners added to [AbortSignal]. Use events.setMaxListeners() to increase limit
(node:4940) MaxListenersExceededWarning: Possible EventTarget memory leak detected. 119 abort listeners added to [AbortSignal]. Use events.setMaxListeners() to increase limit
(node:4940) MaxListenersExceededWarning: Possible EventTarget memory leak detected. 120 abort listeners added to [AbortSignal]. Use events.setMaxListeners() to increase limit
(node:4940) MaxListenersExceededWarning: Possible EventTarget memory leak detected. 121 abort listeners added to [AbortSignal]. Use events.setMaxListeners() to increase limit
09:57:07:905    TRACE   [iMeshDevice:HttpConnection]    HandleMeshPacket 📦 Received TELEMETRY_APP packet
(node:4940) MaxListenersExceededWarning: Possible EventTarget memory leak detected. 122 abort listeners added to [AbortSignal]. Use events.setMaxListeners() to increase limit
(node:4940) MaxListenersExceededWarning: Possible EventTarget memory leak detected. 123 abort listeners added to [AbortSignal]. Use events.setMaxListeners() to increase limit
(node:4940) MaxListenersExceededWarning: Possible EventTarget memory leak detected. 124 abort listeners added to [AbortSignal]. Use events.setMaxListeners() to increase limit
(node:4940) MaxListenersExceededWarning: Possible EventTarget memory leak detected. 125 abort listeners added to [AbortSignal]. Use events.setMaxListeners() to increase limit
(node:4940) MaxListenersExceededWarning: Possible EventTarget memory leak detected. 126 abort listeners added to [AbortSignal]. Use events.setMaxListeners() to increase limit
(node:4940) MaxListenersExceededWarning: Possible EventTarget memory leak detected. 127 abort listeners added to [AbortSignal]. Use events.setMaxListeners() to increase limit
(node:4940) MaxListenersExceededWarning: Possible EventTarget memory leak detected. 128 abort listeners added to [AbortSignal]. Use events.setMaxListeners() to increase limit
09:57:25:910    TRACE   [iMeshDevice:HttpConnection]    HandleMeshPacket 📦 Received TELEMETRY_APP packet
(node:4940) MaxListenersExceededWarning: Possible EventTarget memory leak detected. 129 abort listeners added to [AbortSignal]. Use events.setMaxListeners() to increase limit
(node:4940) MaxListenersExceededWarning: Possible EventTarget memory leak detected. 130 abort listeners added to [AbortSignal]. Use events.setMaxListeners() to increase limit
(node:4940) MaxListenersExceededWarning: Possible EventTarget memory leak detected. 131 abort listeners added to [AbortSignal]. Use events.setMaxListeners() to increase limit
(node:4940) MaxListenersExceededWarning: Possible EventTarget memory leak detected. 132 abort listeners added to [AbortSignal]. Use events.setMaxListeners() to increase limit
(node:4940) MaxListenersExceededWarning: Possible EventTarget memory leak detected. 133 abort listeners added to [AbortSignal]. Use events.setMaxListeners() to increase limit
(node:4940) MaxListenersExceededWarning: Possible EventTarget memory leak detected. 134 abort listeners added to [AbortSignal]. Use events.setMaxListeners() to increase limit
(node:4940) MaxListenersExceededWarning: Possible EventTarget memory leak detected. 135 abort listeners added to [AbortSignal]. Use events.setMaxListeners() to increase limit
(node:4940) MaxListenersExceededWarning: Possible EventTarget memory leak detected. 136 abort listeners added to [AbortSignal]. Use events.setMaxListeners() to increase limit
(node:4940) MaxListenersExceededWarning: Possible EventTarget memory leak detected. 137 abort listeners added to [AbortSignal]. Use events.setMaxListeners() to increase limit

nonsintetic avatar Feb 02 '25 10:02 nonsintetic