diff --git a/indexer/services/roundtable/__tests__/tasks/cache-orderbook-mid-prices.test.ts b/indexer/services/roundtable/__tests__/tasks/cache-orderbook-mid-prices.test.ts deleted file mode 100644 index cd0eee3970..0000000000 --- a/indexer/services/roundtable/__tests__/tasks/cache-orderbook-mid-prices.test.ts +++ /dev/null @@ -1,98 +0,0 @@ -import { - dbHelpers, - testConstants, - testMocks, -} from '@dydxprotocol-indexer/postgres'; -import { - OrderbookMidPricesCache, - OrderbookLevelsCache, - redis, -} from '@dydxprotocol-indexer/redis'; -import { redisClient } from '../../src/helpers/redis'; -import runTask from '../../src/tasks/cache-orderbook-mid-prices'; - -jest.mock('@dydxprotocol-indexer/base', () => ({ - ...jest.requireActual('@dydxprotocol-indexer/base'), - logger: { - info: jest.fn(), - error: jest.fn(), - }, -})); - -jest.mock('@dydxprotocol-indexer/redis', () => ({ - ...jest.requireActual('@dydxprotocol-indexer/redis'), - OrderbookLevelsCache: { - getOrderBookMidPrice: jest.fn(), - }, -})); - -describe('cache-orderbook-mid-prices', () => { - beforeAll(async () => { - await dbHelpers.migrate(); - }); - - beforeEach(async () => { - await dbHelpers.clearData(); - await redis.deleteAllAsync(redisClient); - await testMocks.seedData(); - }); - - afterAll(async () => { - await dbHelpers.teardown(); - jest.resetAllMocks(); - }); - - it('caches mid prices for all markets', async () => { - const market1 = testConstants.defaultPerpetualMarket; - const market2 = testConstants.defaultPerpetualMarket2; - - const mockGetOrderBookMidPrice = jest.spyOn(OrderbookLevelsCache, 'getOrderBookMidPrice'); - mockGetOrderBookMidPrice.mockResolvedValueOnce('100.5'); // For market1 - mockGetOrderBookMidPrice.mockResolvedValueOnce('200.75'); // For market2 - - await runTask(); - - // Check if the mock was called with the correct arguments - expect(mockGetOrderBookMidPrice).toHaveBeenCalledWith(market1.ticker, redisClient); - expect(mockGetOrderBookMidPrice).toHaveBeenCalledWith(market2.ticker, redisClient); - - // Check if prices were cached correctly - const price1 = await OrderbookMidPricesCache.getMedianPrice(redisClient, market1.ticker); - const price2 = await OrderbookMidPricesCache.getMedianPrice(redisClient, market2.ticker); - - expect(price1).toBe('100.5'); - expect(price2).toBe('200.75'); - }); - - it('handles undefined prices', async () => { - const market = testConstants.defaultPerpetualMarket; - - const mockGetOrderBookMidPrice = jest.spyOn(OrderbookLevelsCache, 'getOrderBookMidPrice'); - mockGetOrderBookMidPrice.mockResolvedValueOnce(undefined); - - await runTask(); - - const price = await OrderbookMidPricesCache.getMedianPrice(redisClient, market.ticker); - expect(price).toBeNull(); - - // Check that a log message was created - expect(jest.requireMock('@dydxprotocol-indexer/base').logger.info).toHaveBeenCalledWith({ - at: 'cache-orderbook-mid-prices#runTask', - message: `undefined price for ${market.ticker}`, - }); - }); - - it('handles errors', async () => { - // Mock OrderbookLevelsCache.getOrderBookMidPrice to throw an error - const mockGetOrderBookMidPrice = jest.spyOn(OrderbookLevelsCache, 'getOrderBookMidPrice'); - mockGetOrderBookMidPrice.mockRejectedValueOnce(new Error('Test error')); - - await runTask(); - - expect(jest.requireMock('@dydxprotocol-indexer/base').logger.error).toHaveBeenCalledWith({ - at: 'cache-orderbook-mid-prices#runTask', - message: 'Test error', - error: expect.any(Error), - }); - }); -}); diff --git a/indexer/services/roundtable/src/config.ts b/indexer/services/roundtable/src/config.ts index 34dafba44b..bdc8877e5c 100644 --- a/indexer/services/roundtable/src/config.ts +++ b/indexer/services/roundtable/src/config.ts @@ -60,7 +60,6 @@ export const configSchema = { LOOPS_ENABLED_UPDATE_WALLET_TOTAL_VOLUME: parseBoolean({ default: true }), LOOPS_ENABLED_UPDATE_AFFILIATE_INFO: parseBoolean({ default: true }), LOOPS_ENABLED_DELETE_OLD_FIREBASE_NOTIFICATION_TOKENS: parseBoolean({ default: true }), - LOOPS_ENABLED_CACHE_ORDERBOOK_MID_PRICES: parseBoolean({ default: true }), // Loop Timing LOOPS_INTERVAL_MS_MARKET_UPDATER: parseInteger({ diff --git a/indexer/services/roundtable/src/index.ts b/indexer/services/roundtable/src/index.ts index bfdee334c7..f52903ac19 100644 --- a/indexer/services/roundtable/src/index.ts +++ b/indexer/services/roundtable/src/index.ts @@ -10,7 +10,6 @@ import { connect as connectToRedis, } from './helpers/redis'; import aggregateTradingRewardsTasks from './tasks/aggregate-trading-rewards'; -import cacheOrderbookMidPrices from './tasks/cache-orderbook-mid-prices'; import cancelStaleOrdersTask from './tasks/cancel-stale-orders'; import createLeaderboardTask from './tasks/create-leaderboard'; import createPnlTicksTask from './tasks/create-pnl-ticks'; @@ -273,14 +272,6 @@ async function start(): Promise { ); } - if (config.LOOPS_ENABLED_CACHE_ORDERBOOK_MID_PRICES) { - startLoop( - cacheOrderbookMidPrices, - 'cache_orderbook_mid_prices', - config.LOOPS_INTERVAL_MS_CACHE_ORDERBOOK_MID_PRICES, - ); - } - logger.info({ at: 'index', message: 'Successfully started', diff --git a/indexer/services/roundtable/src/tasks/cache-orderbook-mid-prices.ts b/indexer/services/roundtable/src/tasks/cache-orderbook-mid-prices.ts deleted file mode 100644 index 644f50df6f..0000000000 --- a/indexer/services/roundtable/src/tasks/cache-orderbook-mid-prices.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { - logger, -} from '@dydxprotocol-indexer/base'; -import { - PerpetualMarketFromDatabase, - PerpetualMarketTable, -} from '@dydxprotocol-indexer/postgres'; -import { - OrderbookMidPricesCache, - OrderbookLevelsCache, -} from '@dydxprotocol-indexer/redis'; - -import { redisClient } from '../helpers/redis'; - -/** - * Updates OrderbookMidPricesCache with current orderbook mid price for each market - */ -export default async function runTask(): Promise { - const markets: PerpetualMarketFromDatabase[] = await PerpetualMarketTable.findAll({}, []); - - for (const market of markets) { - try { - const price = await OrderbookLevelsCache.getOrderBookMidPrice(market.ticker, redisClient); - if (price) { - await OrderbookMidPricesCache.setPrice(redisClient, market.ticker, price); - } else { - logger.info({ - at: 'cache-orderbook-mid-prices#runTask', - message: `undefined price for ${market.ticker}`, - }); - } - } catch (error) { - logger.error({ - at: 'cache-orderbook-mid-prices#runTask', - message: error.message, - error, - }); - } - } -}