diff --git a/package.json b/package.json index ab6338f..5092920 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "main": "lib/index.js", "license": "Apache-2.0", "dependencies": { - "@drift-labs/sdk": "2.49.0-beta.2", + "@drift-labs/sdk": "2.49.0-beta.10", "@opentelemetry/api": "^1.1.0", "@opentelemetry/auto-instrumentations-node": "^0.31.1", "@opentelemetry/exporter-prometheus": "^0.31.0", diff --git a/src/index.ts b/src/index.ts index 896462f..44c2c72 100644 --- a/src/index.ts +++ b/src/index.ts @@ -260,11 +260,16 @@ const main = async () => { getSlot: () => orderSubscriber.getSlot(), }; } else { - const userMap = new UserMap( + const userMap = new UserMap({ driftClient, - driftClient.userAccountSubscriptionConfig, - false - ); + subscriptionConfig: { + type: 'websocket', + resubTimeoutMs: 30_000, + commitment: stateCommitment, + }, + skipInitialLoad: false, + includeIdle: false, + }); dlobProvider = getDLOBProviderFromUserMap(userMap); } @@ -289,11 +294,19 @@ const main = async () => { const recursiveFetch = (delay = WS_FALLBACK_FETCH_INTERVAL) => { setTimeout(() => { const startFetch = Date.now(); - dlobProvider.fetch().then(() => { - gpaFetchDurationHistogram.record(Date.now() - startFetch); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - recursiveFetch(); - }); + dlobProvider + .fetch() + .then(() => { + gpaFetchDurationHistogram.record(Date.now() - startFetch); + }) + .catch((e) => { + logger.error('Failed to fetch GPA'); + console.log(e); + }) + .finally(() => { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + recursiveFetch(); + }); }, delay); }; recursiveFetch(); diff --git a/src/publishers/dlobPublisher.ts b/src/publishers/dlobPublisher.ts index 03fc706..d174921 100644 --- a/src/publishers/dlobPublisher.ts +++ b/src/publishers/dlobPublisher.ts @@ -30,6 +30,7 @@ import { getDLOBProviderFromOrderSubscriber, getDLOBProviderFromUserMap, } from '../dlobProvider'; +import FEATURE_FLAGS from '../utils/featureFlags'; require('dotenv').config(); const stateCommitment: Commitment = 'processed'; @@ -206,11 +207,16 @@ const main = async () => { getSlot: () => orderSubscriber.getSlot(), }; } else { - const userMap = new UserMap( + const userMap = new UserMap({ driftClient, - driftClient.userAccountSubscriptionConfig, - false - ); + subscriptionConfig: { + type: 'websocket', + resubTimeoutMs: 30_000, + commitment: stateCommitment, + }, + skipInitialLoad: false, + includeIdle: false, + }); dlobProvider = getDLOBProviderFromUserMap(userMap); } @@ -229,10 +235,22 @@ const main = async () => { spotMarketSubscribers: MARKET_SUBSCRIBERS, }); await dlobSubscriber.subscribe(); - if (useWebsocket) { - setInterval(async () => { - await dlobProvider.fetch(); - }, WS_FALLBACK_FETCH_INTERVAL); + if (useWebsocket && !FEATURE_FLAGS.DISABLE_GPA_REFRESH) { + const recursiveFetch = (delay = WS_FALLBACK_FETCH_INTERVAL) => { + setTimeout(() => { + dlobProvider + .fetch() + .catch((e) => { + logger.error('Failed to fetch GPA'); + console.log(e); + }) + .finally(() => { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + recursiveFetch(); + }); + }, delay); + }; + recursiveFetch(); } console.log('DLOBSubscriber Publishing Messages'); diff --git a/src/publishers/tradesPublisher.ts b/src/publishers/tradesPublisher.ts index 16d9542..5279e16 100644 --- a/src/publishers/tradesPublisher.ts +++ b/src/publishers/tradesPublisher.ts @@ -94,11 +94,16 @@ const main = async () => { await slotSubscriber.subscribe(); - const userMap = new UserMap( + const userMap = new UserMap({ driftClient, - driftClient.userAccountSubscriptionConfig, - false - ); + subscriptionConfig: { + type: 'websocket', + resubTimeoutMs: 30_000, + commitment: stateCommitment, + }, + skipInitialLoad: false, + includeIdle: false, + }); await userMap.subscribe(); const redisClient = new RedisClient(REDIS_HOST, REDIS_PORT, REDIS_PASSWORD); diff --git a/yarn.lock b/yarn.lock index e1ec0cd..b15edc5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -87,10 +87,10 @@ enabled "2.0.x" kuler "^2.0.0" -"@drift-labs/sdk@2.49.0-beta.2": - version "2.49.0-beta.2" - resolved "https://registry.yarnpkg.com/@drift-labs/sdk/-/sdk-2.49.0-beta.2.tgz#aa5182789699dd70e53890989c4f73be9accb8cc" - integrity sha512-Wszb3Q8DQghKJgcF3t2naR8SFhMldSJ1KkCL/knPo6OJbMS26Qo3VOJTDTPHPm6aBWOJjbPUxywgKP7IOLwneQ== +"@drift-labs/sdk@2.49.0-beta.10": + version "2.49.0-beta.10" + resolved "https://registry.yarnpkg.com/@drift-labs/sdk/-/sdk-2.49.0-beta.10.tgz#0d2021daf10174c6d19a07a6e36e6271ea465ecf" + integrity sha512-jSSqinLAajbqG2DxRGblKPrflp7w3/oqQ+di5YXVRRexsKs43XBkoApTtsoRy5KpNB3pkG3em88iwdk99a7hJg== dependencies: "@coral-xyz/anchor" "0.28.1-beta.2" "@ellipsis-labs/phoenix-sdk" "^1.4.2"