Skip to content

Commit c2eb031

Browse files
authored
removed the listener memory leak (#4324)
1 parent 1ab5e75 commit c2eb031

File tree

5 files changed

+21
-8
lines changed

5 files changed

+21
-8
lines changed

.changeset/gentle-fishes-crash.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@chainlink/blocksize-capital-state-adapter': patch
3+
---
4+
5+
update tbe remove listener logic

.pnp.cjs

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/sources/blocksize-capital-state/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
"typescript": "5.8.3"
3737
},
3838
"dependencies": {
39-
"@chainlink/external-adapter-framework": "2.8.0",
39+
"@chainlink/external-adapter-framework": "2.11.1",
4040
"tslib": "2.4.1"
4141
}
4242
}

packages/sources/blocksize-capital-state/src/transport/utils.ts

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -79,20 +79,24 @@ function authMessageHandler(
7979
reject: (error: Error) => void,
8080
timeoutId: NodeJS.Timeout,
8181
connection: WebSocket,
82+
messageHandler: (event: MessageEvent) => void,
8283
) {
8384
try {
8485
const parsed = JSON.parse(event.data.toString())
86+
87+
// Successful authentication
8588
if (parsed.result?.user_id && !parsed.error) {
8689
logger.debug('Got logged in response, connection is ready')
8790
clearTimeout(timeoutId)
88-
connection.removeEventListener('message', authMessageHandler)
91+
connection.removeEventListener('message', messageHandler)
8992
resolve()
9093
return
9194
}
9295

96+
// Authentication error
9397
if (parsed.error) {
9498
clearTimeout(timeoutId)
95-
connection.removeEventListener('message', authMessageHandler)
99+
connection.removeEventListener('message', messageHandler)
96100

97101
if (parsed.error.code === 4001) {
98102
// Invalid API key
@@ -107,14 +111,18 @@ function authMessageHandler(
107111
2. Contact Blocksize Capital billing support
108112
3. Verify your payment method is up to date`)
109113
} else {
110-
logger.warn(`Authentication error: ${parsed.error.message}`)
114+
logger.warn(`Authentication error: ${parsed.error.message} (code: ${parsed.error.code})`)
111115
}
112116

113117
reject(new Error(`Failed to make WS connection: ${JSON.stringify(parsed)}`))
118+
return
114119
}
120+
121+
// If we reach here, the message was not an auth response (could be a different message type)
122+
// We continue waiting for the actual auth response
115123
} catch (error) {
116124
clearTimeout(timeoutId)
117-
connection.removeEventListener('message', authMessageHandler)
125+
connection.removeEventListener('message', messageHandler)
118126
const errorMessage = error instanceof Error ? error.message : String(error)
119127
reject(new Error(`Failed to parse authentication response: ${errorMessage}`))
120128
}
@@ -131,7 +139,7 @@ export const blocksizeStateWebsocketOpenHandler = (
131139
}, 10000)
132140

133141
const messageHandler = (event: MessageEvent) => {
134-
authMessageHandler(event, resolve, reject, timeoutId, connection)
142+
authMessageHandler(event, resolve, reject, timeoutId, connection, messageHandler)
135143
}
136144

137145
connection.addEventListener('message', messageHandler)

yarn.lock

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2869,7 +2869,7 @@ __metadata:
28692869
version: 0.0.0-use.local
28702870
resolution: "@chainlink/blocksize-capital-state-adapter@workspace:packages/sources/blocksize-capital-state"
28712871
dependencies:
2872-
"@chainlink/external-adapter-framework": "npm:2.8.0"
2872+
"@chainlink/external-adapter-framework": "npm:2.11.1"
28732873
"@sinonjs/fake-timers": "npm:9.1.2"
28742874
"@types/jest": "npm:^29.5.14"
28752875
"@types/node": "npm:22.14.1"

0 commit comments

Comments
 (0)