UGA Boxxx

つぶやきの延長のつもりで、知ったこと思ったこと書いてます

【Node.js】MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 disconnect listeners added to [MemoryStore]

(まだ解決できていないが)開発環境でExpressのNodeアプリケーションを動かしていたところ以下のエラーメッセージが表示された

MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 disconnect listeners added to [MemoryStore]

イベントを検知するリスナーを11個セットしたというエラー

調べるとredis関係の記事が多く、redisを使っていたのでとりあえずその周りを調査した

【Node.js】redis を使って warning: possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit. - pospomeのプログラミング日記

javascript - MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 message lis teners added. Use emitter.setMaxListeners() to increase limit - Stack Overflow

明示的にイベントリスナーをセットする実装はなく、インスタンス生成とデータセットに対するget/setしか行っていないが、Redis内部でデータセットに対するなんらかの変更イベントを検知するリスナーがあるらしいので、それが動いたのかもしれない

そして開発環境のみで発生して、本番環境では発生しないことに気付いた

開発環境のみである場合、考えられるのはホットリロードで、ホットリロードでもイベントがクリアされず何度もイベントがセットされてしまったのかもと推測中