From f5460da68158f66ae2b6700682d7c3c653fa8f03 Mon Sep 17 00:00:00 2001 From: GitHub Actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 21 Feb 2024 20:41:15 +0000 Subject: [PATCH 1/6] Bumping sdk dependency to 2.65.0-beta.2 --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 8fe1afb..b004fa0 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "license": "Apache-2.0", "dependencies": { "@coral-xyz/anchor": "^0.29.0", - "@drift-labs/sdk": "2.65.0-beta.1", + "@drift-labs/sdk": "2.65.0-beta.2", "@opentelemetry/api": "^1.1.0", "@opentelemetry/auto-instrumentations-node": "^0.31.1", "@opentelemetry/exporter-prometheus": "^0.31.0", diff --git a/yarn.lock b/yarn.lock index d978e0b..f977e49 100644 --- a/yarn.lock +++ b/yarn.lock @@ -115,10 +115,10 @@ enabled "2.0.x" kuler "^2.0.0" -"@drift-labs/sdk@2.65.0-beta.1": - version "2.65.0-beta.1" - resolved "https://registry.yarnpkg.com/@drift-labs/sdk/-/sdk-2.65.0-beta.1.tgz#559e831691007e600863fb0b0358e4157bec3e6b" - integrity sha512-yjQ8oxtgIMjY4BHoCebm0cz3/8FHWge0PwT3xgnUJ3d7mBQJ4/vBv4kDXMbraD/a7NO8LUOdnThLcmreUFnJNw== +"@drift-labs/sdk@2.65.0-beta.2": + version "2.65.0-beta.2" + resolved "https://registry.yarnpkg.com/@drift-labs/sdk/-/sdk-2.65.0-beta.2.tgz#f51da8a9571d7cd7fd5928aa32585867860a4862" + integrity sha512-FrX0DaD5cyhFIL29lHePcbdCR4JdB1C6hUIvvxFTC7PgidBFJGOqAxjidWNekZibqNDI5av1n0YS03PxRjbJPg== dependencies: "@coral-xyz/anchor" "0.28.1-beta.2" "@ellipsis-labs/phoenix-sdk" "^1.4.2" From b427fc29f3c2126707613465e7db3e9bb21031a5 Mon Sep 17 00:00:00 2001 From: GitHub Actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 21 Feb 2024 20:57:36 +0000 Subject: [PATCH 2/6] Bumping sdk dependency to 2.65.0-beta.3 --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index b004fa0..27be4df 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "license": "Apache-2.0", "dependencies": { "@coral-xyz/anchor": "^0.29.0", - "@drift-labs/sdk": "2.65.0-beta.2", + "@drift-labs/sdk": "2.65.0-beta.3", "@opentelemetry/api": "^1.1.0", "@opentelemetry/auto-instrumentations-node": "^0.31.1", "@opentelemetry/exporter-prometheus": "^0.31.0", diff --git a/yarn.lock b/yarn.lock index f977e49..118adf8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -115,10 +115,10 @@ enabled "2.0.x" kuler "^2.0.0" -"@drift-labs/sdk@2.65.0-beta.2": - version "2.65.0-beta.2" - resolved "https://registry.yarnpkg.com/@drift-labs/sdk/-/sdk-2.65.0-beta.2.tgz#f51da8a9571d7cd7fd5928aa32585867860a4862" - integrity sha512-FrX0DaD5cyhFIL29lHePcbdCR4JdB1C6hUIvvxFTC7PgidBFJGOqAxjidWNekZibqNDI5av1n0YS03PxRjbJPg== +"@drift-labs/sdk@2.65.0-beta.3": + version "2.65.0-beta.3" + resolved "https://registry.yarnpkg.com/@drift-labs/sdk/-/sdk-2.65.0-beta.3.tgz#145eb2a7381d428ef4fde1b190bf17df2d487e35" + integrity sha512-Nm5SPe8OlrDvmhmRc4ljaglo2Auz6HWR51PkjEEdT7yY1T6wOo0DUariejGDw+BFsD7kBo2w4cfQKEt+2SCPYA== dependencies: "@coral-xyz/anchor" "0.28.1-beta.2" "@ellipsis-labs/phoenix-sdk" "^1.4.2" From c5655ae46148fc426c81ae3cbc72cf767c1a5e0d Mon Sep 17 00:00:00 2001 From: GitHub Actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 21 Feb 2024 21:03:57 +0000 Subject: [PATCH 3/6] Bumping sdk dependency to 2.65.0-beta.4 --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 27be4df..52f1a6a 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "license": "Apache-2.0", "dependencies": { "@coral-xyz/anchor": "^0.29.0", - "@drift-labs/sdk": "2.65.0-beta.3", + "@drift-labs/sdk": "2.65.0-beta.4", "@opentelemetry/api": "^1.1.0", "@opentelemetry/auto-instrumentations-node": "^0.31.1", "@opentelemetry/exporter-prometheus": "^0.31.0", diff --git a/yarn.lock b/yarn.lock index 118adf8..feae40e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -115,10 +115,10 @@ enabled "2.0.x" kuler "^2.0.0" -"@drift-labs/sdk@2.65.0-beta.3": - version "2.65.0-beta.3" - resolved "https://registry.yarnpkg.com/@drift-labs/sdk/-/sdk-2.65.0-beta.3.tgz#145eb2a7381d428ef4fde1b190bf17df2d487e35" - integrity sha512-Nm5SPe8OlrDvmhmRc4ljaglo2Auz6HWR51PkjEEdT7yY1T6wOo0DUariejGDw+BFsD7kBo2w4cfQKEt+2SCPYA== +"@drift-labs/sdk@2.65.0-beta.4": + version "2.65.0-beta.4" + resolved "https://registry.yarnpkg.com/@drift-labs/sdk/-/sdk-2.65.0-beta.4.tgz#df711ffc482af3b76bff1e2af17c22f8eafd2b5f" + integrity sha512-t58/OF5sbn7p4XTaDJbWtao1jhIB31gdgICeTvekNO5zi2S2byYcrlKmc0BRroVSy2adXB7YI2taO32LjwIJPg== dependencies: "@coral-xyz/anchor" "0.28.1-beta.2" "@ellipsis-labs/phoenix-sdk" "^1.4.2" From b15f41a0ca5fd08305ab629a740451c7fe133752 Mon Sep 17 00:00:00 2001 From: GitHub Actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 21 Feb 2024 22:58:05 +0000 Subject: [PATCH 4/6] Bumping sdk dependency to 2.65.0-beta.5 --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 52f1a6a..67c1753 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "license": "Apache-2.0", "dependencies": { "@coral-xyz/anchor": "^0.29.0", - "@drift-labs/sdk": "2.65.0-beta.4", + "@drift-labs/sdk": "2.65.0-beta.5", "@opentelemetry/api": "^1.1.0", "@opentelemetry/auto-instrumentations-node": "^0.31.1", "@opentelemetry/exporter-prometheus": "^0.31.0", diff --git a/yarn.lock b/yarn.lock index feae40e..8f534dd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -115,10 +115,10 @@ enabled "2.0.x" kuler "^2.0.0" -"@drift-labs/sdk@2.65.0-beta.4": - version "2.65.0-beta.4" - resolved "https://registry.yarnpkg.com/@drift-labs/sdk/-/sdk-2.65.0-beta.4.tgz#df711ffc482af3b76bff1e2af17c22f8eafd2b5f" - integrity sha512-t58/OF5sbn7p4XTaDJbWtao1jhIB31gdgICeTvekNO5zi2S2byYcrlKmc0BRroVSy2adXB7YI2taO32LjwIJPg== +"@drift-labs/sdk@2.65.0-beta.5": + version "2.65.0-beta.5" + resolved "https://registry.yarnpkg.com/@drift-labs/sdk/-/sdk-2.65.0-beta.5.tgz#3980886957cda76e80a8982a4363647711f223bb" + integrity sha512-M95F/R4fXNLvL0GkhoDQvfXLe+UpWPgvLWrJNnFR0j6WMS+IyJTykiZSBI0n/EqTI78AnA+nvbV0GVcFfpZnrA== dependencies: "@coral-xyz/anchor" "0.28.1-beta.2" "@ellipsis-labs/phoenix-sdk" "^1.4.2" From bccdf17a56d53f91e78d5baa44c8406722d09e24 Mon Sep 17 00:00:00 2001 From: Nour Alharithi Date: Wed, 21 Feb 2024 16:14:05 -0800 Subject: [PATCH 5/6] clear intervals properly --- src/wsConnectionManager.ts | 51 ++++++++++++++++++++------------------ 1 file changed, 27 insertions(+), 24 deletions(-) diff --git a/src/wsConnectionManager.ts b/src/wsConnectionManager.ts index 1afaec4..2f56720 100644 --- a/src/wsConnectionManager.ts +++ b/src/wsConnectionManager.ts @@ -36,6 +36,7 @@ const WS_PORT = process.env.WS_PORT || '3000'; console.log(`WS LISTENER PORT : ${WS_PORT}`); const REDIS_PASSWORD = process.env.REDIS_PASSWORD; +const MAX_BUFFERED_AMOUNT = 300000; const safeGetRawChannelFromMessage = (message: any): string => { return message?.channel; @@ -103,7 +104,10 @@ async function main() { const subscribers = channelSubscribers.get(subscribedChannel); if (subscribers) { subscribers.forEach((ws) => { - if (ws.readyState === WebSocket.OPEN && ws.bufferedAmount < 300000) + if ( + ws.readyState === WebSocket.OPEN && + ws.bufferedAmount < MAX_BUFFERED_AMOUNT + ) ws.send( JSON.stringify({ channel: subscribedChannel, data: message }) ); @@ -245,10 +249,31 @@ async function main() { } }); + // Set interval to send heartbeat every 5 seconds + const heartbeatInterval = setInterval(() => { + if (ws.readyState === WebSocket.OPEN) { + ws.send(JSON.stringify({ channel: 'heartbeat' })); + } else { + clearInterval(heartbeatInterval); + } + }, 5000); + + // Buffer overflow check interval + const bufferInterval = setInterval(() => { + if (ws.bufferedAmount > MAX_BUFFERED_AMOUNT) { + if (ws.readyState === WebSocket.OPEN) { + ws.close(1008, 'Buffer overflow'); + } + clearInterval(bufferInterval); + } + }, 10000); + // Handle disconnection ws.on('close', () => { console.log('Client disconnected'); - // Clear any existing intervals and timeouts + // Clear any existing intervals + clearInterval(heartbeatInterval); + clearInterval(bufferInterval); channelSubscribers.forEach((subscribers, channel) => { if (subscribers.delete(ws) && subscribers.size === 0) { redisClient.client.unsubscribe(channel); @@ -262,15 +287,6 @@ async function main() { ws.on('error', (error) => { console.error('Socket error:', error); }); - - // Set interval to send heartbeat every 5 seconds - setInterval(() => { - ws.send( - JSON.stringify({ - channel: 'heartbeat', - }) - ); - }, 5000); }); server.listen(WS_PORT, () => { @@ -285,19 +301,6 @@ async function main() { server.on('error', (error) => { console.error('Server error:', error); }); - - // Periodic check for bad clients and disconnect them to alleviate backpressure - setInterval(() => { - let set = new Set(); - for (const [_channel, wsSet] of channelSubscribers) { - set = new Set([...set, ...wsSet]); - } - for (const ws of set) { - if (ws.bufferedAmount > 350000) { - ws.close(); - } - } - }, 5000); } async function recursiveTryCatch(f: () => void) { From b940eee9305136decb6fa7cb3d0fb9fb30915cdd Mon Sep 17 00:00:00 2001 From: GitHub Actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 22 Feb 2024 00:45:02 +0000 Subject: [PATCH 6/6] Bumping sdk dependency to 2.65.0-beta.6 --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 67c1753..6e10052 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "license": "Apache-2.0", "dependencies": { "@coral-xyz/anchor": "^0.29.0", - "@drift-labs/sdk": "2.65.0-beta.5", + "@drift-labs/sdk": "2.65.0-beta.6", "@opentelemetry/api": "^1.1.0", "@opentelemetry/auto-instrumentations-node": "^0.31.1", "@opentelemetry/exporter-prometheus": "^0.31.0", diff --git a/yarn.lock b/yarn.lock index 8f534dd..b404613 100644 --- a/yarn.lock +++ b/yarn.lock @@ -115,10 +115,10 @@ enabled "2.0.x" kuler "^2.0.0" -"@drift-labs/sdk@2.65.0-beta.5": - version "2.65.0-beta.5" - resolved "https://registry.yarnpkg.com/@drift-labs/sdk/-/sdk-2.65.0-beta.5.tgz#3980886957cda76e80a8982a4363647711f223bb" - integrity sha512-M95F/R4fXNLvL0GkhoDQvfXLe+UpWPgvLWrJNnFR0j6WMS+IyJTykiZSBI0n/EqTI78AnA+nvbV0GVcFfpZnrA== +"@drift-labs/sdk@2.65.0-beta.6": + version "2.65.0-beta.6" + resolved "https://registry.yarnpkg.com/@drift-labs/sdk/-/sdk-2.65.0-beta.6.tgz#7da1434ce04142f4adca573baf44dc3539303a0f" + integrity sha512-ENnkk1o1wahXoT3F1svjiHzVdSrxlVZ7NfUXmrtyQEqbcZtbUyoS6CqL9f7aC273ydw7xC0a3jrxEH0yMOrcVQ== dependencies: "@coral-xyz/anchor" "0.28.1-beta.2" "@ellipsis-labs/phoenix-sdk" "^1.4.2"