diff --git a/.changeset/socket-mode-disconnect-socket-leak.md b/.changeset/socket-mode-disconnect-socket-leak.md deleted file mode 100644 index dfc768344..000000000 --- a/.changeset/socket-mode-disconnect-socket-leak.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -"@slack/socket-mode": patch ---- - -Fix leaked TCP sockets on disconnect ([#2709](https://github.com/slackapi/node-slack-sdk/issues/2709)). Moving from `ws` to undici's `WebSocket` in 3.0.0 dropped every force-close mechanism, so `ESTABLISHED` sockets were never torn down and accumulated toward Slack's per-app connection cap. - -- `disconnect()` now arms a 30s close-handshake timeout, so a peer that never replies to the close frame no longer leaves the socket stuck in `CLOSING` indefinitely. -- On the default dispatcher path, the underlying TCP socket is now captured and force-destroyed during cleanup. A user-supplied `dispatcher` owns its own socket and instead relies on the close-handshake timeout — this limitation is documented on the `dispatcher` option. -- The `close` handler no longer schedules a reconnect on stale or overlapping close events, so at most one reconnect is scheduled per disconnect. diff --git a/docs/english/reference/socket-mode/classes/SocketModeClient.md b/docs/english/reference/socket-mode/classes/SocketModeClient.md index bdc584e25..8fc3d7c4b 100644 --- a/docs/english/reference/socket-mode/classes/SocketModeClient.md +++ b/docs/english/reference/socket-mode/classes/SocketModeClient.md @@ -116,7 +116,7 @@ EventEmitter.addListener disconnect(): Promise; ``` -Defined in: [packages/socket-mode/src/SocketModeClient.ts:221](https://github.com/slackapi/node-slack-sdk/blob/main/packages/socket-mode/src/SocketModeClient.ts#L221) +Defined in: [packages/socket-mode/src/SocketModeClient.ts:223](https://github.com/slackapi/node-slack-sdk/blob/main/packages/socket-mode/src/SocketModeClient.ts#L223) End a Socket Mode session. After this method is called no messages will be sent or received unless you call start() again later. @@ -472,7 +472,7 @@ EventEmitter.removeListener start(): Promise; ``` -Defined in: [packages/socket-mode/src/SocketModeClient.ts:178](https://github.com/slackapi/node-slack-sdk/blob/main/packages/socket-mode/src/SocketModeClient.ts#L178) +Defined in: [packages/socket-mode/src/SocketModeClient.ts:180](https://github.com/slackapi/node-slack-sdk/blob/main/packages/socket-mode/src/SocketModeClient.ts#L180) Start a Socket Mode session app. This method must be called before any messages can be sent or received, diff --git a/docs/english/reference/socket-mode/index.md b/docs/english/reference/socket-mode/index.md index e078a967d..d7ede6771 100644 --- a/docs/english/reference/socket-mode/index.md +++ b/docs/english/reference/socket-mode/index.md @@ -1,4 +1,4 @@ -# @slack/socket-mode v3.0.0 +# @slack/socket-mode v3.0.1 ## Enumerations diff --git a/package-lock.json b/package-lock.json index d01378cbc..787c8c1a4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5407,7 +5407,7 @@ }, "packages/socket-mode": { "name": "@slack/socket-mode", - "version": "3.0.0", + "version": "3.0.1", "license": "MIT", "dependencies": { "@slack/logger": "^5.0.0", diff --git a/packages/socket-mode/CHANGELOG.md b/packages/socket-mode/CHANGELOG.md index 8eeeca79b..2c6f464d7 100644 --- a/packages/socket-mode/CHANGELOG.md +++ b/packages/socket-mode/CHANGELOG.md @@ -1,5 +1,15 @@ # @slack/socket-mode +## 3.0.1 + +### Patch Changes + +- 5c2362c: Fix leaked TCP sockets on disconnect ([#2709](https://github.com/slackapi/node-slack-sdk/issues/2709)). Moving from `ws` to undici's `WebSocket` in 3.0.0 dropped every force-close mechanism, so `ESTABLISHED` sockets were never torn down and accumulated toward Slack's per-app connection cap. + + - `disconnect()` now arms a 30s close-handshake timeout, so a peer that never replies to the close frame no longer leaves the socket stuck in `CLOSING` indefinitely. + - On the default dispatcher path, the underlying TCP socket is now captured and force-destroyed during cleanup. A user-supplied `dispatcher` owns its own socket and instead relies on the close-handshake timeout — this limitation is documented on the `dispatcher` option. + - The `close` handler no longer schedules a reconnect on stale or overlapping close events, so at most one reconnect is scheduled per disconnect. + ## 3.0.0 ### Major Changes diff --git a/packages/socket-mode/package.json b/packages/socket-mode/package.json index ab5c523e0..1f7c7ab15 100644 --- a/packages/socket-mode/package.json +++ b/packages/socket-mode/package.json @@ -1,6 +1,6 @@ { "name": "@slack/socket-mode", - "version": "3.0.0", + "version": "3.0.1", "description": "Official library for using the Slack Platform's Socket Mode API", "author": "Slack Technologies, LLC", "license": "MIT",