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 8caed26..7d06acb 100644 --- a/src/index.ts +++ b/src/index.ts @@ -21,8 +21,8 @@ import { SlotSource, SlotSubscriber, UserMap, - UserStatsMap, Wallet, + getUserStatsAccountPublicKey, getVariant, groupL2, initialize, @@ -231,8 +231,6 @@ const main = async () => { lastSlotReceived = slotSource.getSlot(); }, ORDERBOOK_UPDATE_INTERVAL); - const userStatsMap = new UserStatsMap(driftClient); - logger.info(`Initializing userMap...`); const initUserMapStart = Date.now(); const userMap = new UserMap( @@ -243,12 +241,6 @@ const main = async () => { await userMap.subscribe(); logger.info(`userMap initialized in ${Date.now() - initUserMapStart} ms`); - const initUserStatsMapStarts = Date.now(); - await userStatsMap.sync(userMap.getUniqueAuthorities()); - logger.info( - `userStatsMap initialized in ${Date.now() - initUserStatsMapStarts} ms` - ); - logger.info(`Initializing DLOBSubscriber...`); const initDlobSubscriberStart = Date.now(); const dlobSubscriber = new DLOBSubscriber({ @@ -265,11 +257,7 @@ const main = async () => { MARKET_SUBSCRIBERS = await initializeAllMarketSubscribers(driftClient); const handleStartup = async (_req, res, _next) => { - if ( - driftClient.isSubscribed && - userMap.size() > 0 && - userStatsMap.size() > 0 - ) { + if (driftClient.isSubscribed && userMap.size() > 0) { res.writeHead(200); res.end('OK'); } else { @@ -559,12 +547,12 @@ const main = async () => { if (`${includeUserStats}`.toLowerCase() === 'true') { const userAccount = side.userAccount.toBase58(); await userMap.mustGet(userAccount); - const userStats = await userStatsMap.mustGet( - userMap.getUserAuthority(userAccount)!.toBase58() - ); topMakers.add([ userAccount, - userStats.userStatsAccountPublicKey.toBase58(), + getUserStatsAccountPublicKey( + driftClient.program.programId, + userMap.getUserAuthority(userAccount) + ), ]); } else { topMakers.add(side.userAccount.toBase58());