neo4j / neo4j-javascript-driver

Neo4j Bolt driver for JavaScript
https://neo4j.com/docs/javascript-manual/current/
Apache License 2.0
839 stars 148 forks source link

Fix BrowserChannel close when is already closing #1169

Closed bigmontz closed 6 months ago

bigmontz commented 6 months ago

WebSockets can take a while for closing, and when WebSocket.close is called while the status is WS_CLOSING, an error is thrown.

This situation can happen when the driver is being closed while sessions are still releasing connections back to the pool or after a receive timeout while closing the session.

BrowserChannel should wait for the original close socket to finish whenever a new close request happens to avoid this kind of error and provide a graceful shutdown for driver and session.