diff --git a/src/core/metrics.ts b/src/core/metrics.ts index 344661a..99e9de0 100644 --- a/src/core/metrics.ts +++ b/src/core/metrics.ts @@ -134,11 +134,10 @@ const handleHealthCheck = async (req, res, next) => { if (lastHealthCheckState) { res.writeHead(200); res.end('OK'); - } else { - res.writeHead(500); - res.end(`NOK`); + lastHealthCheckPerformed = Date.now(); + return; } - return; + // always check if last check was unhealthy (give it another chance to recover) } const { lastSlotReceived, lastSlotReceivedMutex } = getSlotHealthCheckInfo(); @@ -149,7 +148,9 @@ const handleHealthCheck = async (req, res, next) => { lastHealthCheckState = lastSlotReceived > lastHealthCheckSlot; if (!lastHealthCheckState) { logger.error( - `Unhealthy: lastSlot: ${lastSlotReceived}, lastHealthCheckSlot: ${lastHealthCheckSlot}` + `Unhealthy: lastSlot: ${lastSlotReceived}, lastHealthCheckSlot: ${lastHealthCheckSlot}, timeSinceLastCheck: ${ + Date.now() - lastHealthCheckPerformed + } ms` ); } diff --git a/src/index.ts b/src/index.ts index c960e32..fd138a3 100644 --- a/src/index.ts +++ b/src/index.ts @@ -21,8 +21,8 @@ import { SlotSource, SlotSubscriber, UserMap, - UserStatsMap, Wallet, + getUserStatsAccountPublicKey, getVariant, groupL2, initialize, @@ -275,8 +275,6 @@ const main = async () => { lastSlotReceived = slotSource.getSlot(); }, ORDERBOOK_UPDATE_INTERVAL); - const userStatsMap = new UserStatsMap(driftClient); - logger.info(`Initializing DLOB Provider...`); const initUserMapStart = Date.now(); await dlobProvider.subscribe(); @@ -285,12 +283,6 @@ const main = async () => { ); logger.info(`dlob provider size ${dlobProvider.size()}`); - const initUserStatsMapStarts = Date.now(); - await userStatsMap.sync(dlobProvider.getUniqueAuthorities()); - logger.info( - `userStatsMap initialized in ${Date.now() - initUserStatsMapStarts} ms` - ); - logger.info(`Initializing DLOBSubscriber...`); const initDlobSubscriberStart = Date.now(); const dlobSubscriber = new DLOBSubscriber({ @@ -307,11 +299,7 @@ const main = async () => { MARKET_SUBSCRIBERS = await initializeAllMarketSubscribers(driftClient); const handleStartup = async (_req, res, _next) => { - if ( - driftClient.isSubscribed && - dlobProvider.size() > 0 && - userStatsMap.size() > 0 - ) { + if (driftClient.isSubscribed && dlobProvider.size() > 0) { res.writeHead(200); res.end('OK'); } else { @@ -594,12 +582,12 @@ const main = async () => { const userAccount = dlobProvider.getUserAccount( side.userAccount ); - const userStats = await userStatsMap.mustGet( - userAccount.authority.toBase58() - ); topMakers.add([ userAccount, - userStats.userStatsAccountPublicKey.toBase58(), + getUserStatsAccountPublicKey( + driftClient.program.programId, + userAccount.authority + ), ]); } else { topMakers.add(side.userAccount.toBase58());