Merge pull request #213 from drift-labs/master
remove l2 from server lite and rotation to server lite l3
This commit is contained in:
@@ -236,89 +236,6 @@ const main = async (): Promise<void> => {
|
|||||||
handleHealthCheck(2 * WS_FALLBACK_FETCH_INTERVAL, slotSubscriber)
|
handleHealthCheck(2 * WS_FALLBACK_FETCH_INTERVAL, slotSubscriber)
|
||||||
);
|
);
|
||||||
|
|
||||||
app.get('/l2', async (req, res, next) => {
|
|
||||||
try {
|
|
||||||
const {
|
|
||||||
marketIndex,
|
|
||||||
marketType,
|
|
||||||
depth,
|
|
||||||
includeVamm,
|
|
||||||
includePhoenix,
|
|
||||||
includeSerum,
|
|
||||||
} = req.query;
|
|
||||||
|
|
||||||
const isSpot = (marketType as string).toLowerCase() === 'spot';
|
|
||||||
const normedMarketIndex = parseInt(marketIndex as string);
|
|
||||||
const normedMarketType = isSpot ? MarketType.SPOT : MarketType.PERP;
|
|
||||||
|
|
||||||
const adjustedDepth = depth ?? '100';
|
|
||||||
let l2Formatted: any;
|
|
||||||
if (!isSpot && `${includeVamm}`?.toLowerCase() === 'true') {
|
|
||||||
const redisClient = perpMarketRedisMap.get(normedMarketIndex).client;
|
|
||||||
const redisL2 = await redisClient.get(
|
|
||||||
`last_update_orderbook_perp_${normedMarketIndex}`
|
|
||||||
);
|
|
||||||
const depth = Math.min(parseInt(adjustedDepth as string) ?? 1, 100);
|
|
||||||
redisL2['bids'] = redisL2['bids']?.slice(0, depth);
|
|
||||||
redisL2['asks'] = redisL2['asks']?.slice(0, depth);
|
|
||||||
|
|
||||||
if (
|
|
||||||
redisL2 &&
|
|
||||||
slotSubscriber.getSlot() - parseInt(redisL2['slot']) <
|
|
||||||
SLOT_STALENESS_TOLERANCE
|
|
||||||
) {
|
|
||||||
l2Formatted = JSON.stringify(redisL2);
|
|
||||||
} else {
|
|
||||||
if (redisL2 && redisClients.length > 1) {
|
|
||||||
if (canRotate(normedMarketType, normedMarketIndex)) {
|
|
||||||
rotateClient(normedMarketType, normedMarketIndex);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else if (
|
|
||||||
isSpot &&
|
|
||||||
`${includeSerum}`?.toLowerCase() === 'true' &&
|
|
||||||
`${includePhoenix}`?.toLowerCase() === 'true'
|
|
||||||
) {
|
|
||||||
const redisClient = spotMarketRedisMap.get(normedMarketIndex).client;
|
|
||||||
const redisL2 = await redisClient.get(
|
|
||||||
`last_update_orderbook_spot_${normedMarketIndex}`
|
|
||||||
);
|
|
||||||
const depth = Math.min(parseInt(adjustedDepth as string) ?? 1, 100);
|
|
||||||
redisL2['bids'] = redisL2['bids']?.slice(0, depth);
|
|
||||||
redisL2['asks'] = redisL2['asks']?.slice(0, depth);
|
|
||||||
if (
|
|
||||||
redisL2 &&
|
|
||||||
slotSubscriber.getSlot() - parseInt(redisL2['slot']) <
|
|
||||||
SLOT_STALENESS_TOLERANCE
|
|
||||||
) {
|
|
||||||
l2Formatted = JSON.stringify(redisL2);
|
|
||||||
} else {
|
|
||||||
if (redisL2 && redisClients.length > 1) {
|
|
||||||
if (canRotate(normedMarketType, normedMarketIndex)) {
|
|
||||||
rotateClient(normedMarketType, normedMarketIndex);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (l2Formatted) {
|
|
||||||
cacheHitCounter.add(1, {
|
|
||||||
miss: false,
|
|
||||||
path: req.baseUrl + req.path,
|
|
||||||
});
|
|
||||||
res.writeHead(200);
|
|
||||||
res.end(l2Formatted);
|
|
||||||
return;
|
|
||||||
} else {
|
|
||||||
res.writeHead(400);
|
|
||||||
res.end({ error: 'No cached L2 found' });
|
|
||||||
}
|
|
||||||
} catch (err) {
|
|
||||||
next(err);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
app.get('/l3', async (req, res, next) => {
|
app.get('/l3', async (req, res, next) => {
|
||||||
try {
|
try {
|
||||||
const { marketIndex, marketType } = req.query;
|
const { marketIndex, marketType } = req.query;
|
||||||
@@ -348,6 +265,11 @@ const main = async (): Promise<void> => {
|
|||||||
res.end(redisL3);
|
res.end(redisL3);
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
|
if (redisL3 && redisClients.length > 1) {
|
||||||
|
if (canRotate(normedMarketType, normedMarketIndex)) {
|
||||||
|
rotateClient(normedMarketType, normedMarketIndex);
|
||||||
|
}
|
||||||
|
}
|
||||||
cacheHitCounter.add(1, {
|
cacheHitCounter.add(1, {
|
||||||
miss: true,
|
miss: true,
|
||||||
path: req.baseUrl + req.path,
|
path: req.baseUrl + req.path,
|
||||||
|
|||||||
Reference in New Issue
Block a user