remove market staleness check, lots of inactive markets

This commit is contained in:
wphan
2025-07-15 14:40:25 -07:00
parent 508aef4f2e
commit 1c21a50097

View File

@@ -46,8 +46,6 @@ export type wsMarketArgs = {
require('dotenv').config(); require('dotenv').config();
const PERP_MAKRET_STALENESS_THRESHOLD = 30 * 60 * 1000;
const SPOT_MAKRET_STALENESS_THRESHOLD = 60 * 60 * 1000;
const STALE_ORACLE_REMOVE_VAMM_THRESHOLD = 160; const STALE_ORACLE_REMOVE_VAMM_THRESHOLD = 160;
const INDICATIVE_QUOTES_PUBKEY = 'inDNdu3ML4vG5LNExqcwuCQtLcCU8KfK5YM2qYV3JJz'; const INDICATIVE_QUOTES_PUBKEY = 'inDNdu3ML4vG5LNExqcwuCQtLcCU8KfK5YM2qYV3JJz';
@@ -72,10 +70,6 @@ export class DLOBSubscriberIO extends DLOBSubscriber {
redisClient: RedisClient; redisClient: RedisClient;
indicativeQuotesRedisClient?: RedisClient; indicativeQuotesRedisClient?: RedisClient;
public killSwitchSlotDiffThreshold: number; public killSwitchSlotDiffThreshold: number;
public lastMarketSlotMap: Map<
MarketType,
Map<number, { slot: number; ts: number }>
>;
public offloadQueue?: ReturnType<typeof OffloadQueue>; public offloadQueue?: ReturnType<typeof OffloadQueue>;
public enableOffload: boolean; public enableOffload: boolean;
@@ -108,9 +102,6 @@ export class DLOBSubscriberIO extends DLOBSubscriber {
this.lastSeenL2Formatted = new Map(); this.lastSeenL2Formatted = new Map();
this.lastSeenL2Formatted.set(MarketType.SPOT, new Map()); this.lastSeenL2Formatted.set(MarketType.SPOT, new Map());
this.lastSeenL2Formatted.set(MarketType.PERP, new Map()); this.lastSeenL2Formatted.set(MarketType.PERP, new Map());
this.lastMarketSlotMap = new Map();
this.lastMarketSlotMap.set(MarketType.SPOT, new Map());
this.lastMarketSlotMap.set(MarketType.PERP, new Map());
for (const market of config.perpMarketInfos) { for (const market of config.perpMarketInfos) {
const perpMarket = this.driftClient.getPerpMarketAccount( const perpMarket = this.driftClient.getPerpMarketAccount(
@@ -362,14 +353,6 @@ export class DLOBSubscriberIO extends DLOBSubscriber {
const l2 = this.getL2({ ...l2FuncArgs, includeVamm }); const l2 = this.getL2({ ...l2FuncArgs, includeVamm });
const slot = l2.slot; const slot = l2.slot;
const lastMarketSlotAndTime = this.lastMarketSlotMap
.get(marketArgs.marketType)
.get(marketArgs.marketIndex);
if (!lastMarketSlotAndTime) {
this.lastMarketSlotMap
.get(marketArgs.marketType)
.set(marketArgs.marketIndex, { slot, ts: Date.now() });
}
if (slot) { if (slot) {
delete l2.slot; delete l2.slot;
@@ -425,33 +408,6 @@ export class DLOBSubscriberIO extends DLOBSubscriber {
setHealthStatus(HEALTH_STATUS.Restart); setHealthStatus(HEALTH_STATUS.Restart);
} }
// Check if times and slots are too different for market
const MAKRET_STALENESS_THRESHOLD =
marketType === 'perp'
? PERP_MAKRET_STALENESS_THRESHOLD
: SPOT_MAKRET_STALENESS_THRESHOLD;
if (
lastMarketSlotAndTime &&
l2Formatted['marketSlot'] === lastMarketSlotAndTime.slot &&
Date.now() - lastMarketSlotAndTime.ts > MAKRET_STALENESS_THRESHOLD &&
!skipSlotCheck
) {
logger.warn(
`Unhealthy process due to same slot for market ${marketName} after > ${MAKRET_STALENESS_THRESHOLD}ms. dlobProviderSlot: ${slot}, marketSlot: ${l2Formatted['marketSlot']}`
);
setHealthStatus(HEALTH_STATUS.Restart);
} else if (
lastMarketSlotAndTime &&
l2Formatted['marketSlot'] !== lastMarketSlotAndTime.slot
) {
this.lastMarketSlotMap
.get(marketArgs.marketType)
.set(marketArgs.marketIndex, {
slot: l2Formatted['marketSlot'],
ts: Date.now(),
});
}
const l2Formatted_depth100 = Object.assign({}, l2Formatted, { const l2Formatted_depth100 = Object.assign({}, l2Formatted, {
bids: l2Formatted.bids.slice(0, 100), bids: l2Formatted.bids.slice(0, 100),
asks: l2Formatted.asks.slice(0, 100), asks: l2Formatted.asks.slice(0, 100),
@@ -526,14 +482,6 @@ export class DLOBSubscriberIO extends DLOBSubscriber {
const { marketName, ...l2FuncArgs } = marketArgs; const { marketName, ...l2FuncArgs } = marketArgs;
const l3 = this.getL3(l2FuncArgs); const l3 = this.getL3(l2FuncArgs);
const slot = l3.slot; const slot = l3.slot;
const lastMarketSlotAndTime = this.lastMarketSlotMap
.get(marketArgs.marketType)
.get(marketArgs.marketIndex);
if (!lastMarketSlotAndTime) {
this.lastMarketSlotMap
.get(marketArgs.marketType)
.set(marketArgs.marketIndex, { slot, ts: Date.now() });
}
if (slot) { if (slot) {
delete l3.slot; delete l3.slot;