Skip to content

Commit 4331527

Browse files
fix(blue-sdk-wagmi): remove blockNumber from query keys to prevent OOM
Remove blockNumber and blockTag from all fetch*QueryKey functions so that TanStack Query reuses a single cache entry per entity instead of creating ~2,200 new entries every block (~10s on Base L2). Before: each block spawns N new Query objects, old ones fail to gc at scale, memory grows ~2.3 MB/s → OOM in ~20 min on heavy markets (Base cbBTC/USDC). After: queries are stable. blockNumber/blockTag are captured in the queryFn closure and passed to the underlying viem fetch calls, so RPC reads still target the correct block. Consumers drive re-fetches by calling invalidateAllBlueSdkQueries(queryClient) on each new block. Changes: - queries/fetch*.ts: exclude blockNumber and blockTag from queryKey return; capture them from the parameters closure for queryFn. - hooks/use*.ts: remove staleTime: Infinity default when blockNumber is set. Consumers can still pass staleTime via the query parameter. - simulation-sdk-wagmi/useSimulationState: drop Infinity staleTime override. - New export: invalidateAllBlueSdkQueries() + BLUE_SDK_QUERY_NAMES constant for consumer-driven block-change invalidation. BREAKING CHANGE: Query keys no longer contain blockNumber/blockTag. Code that accesses the cache with block-specific keys (queryClient.getQueryData(['fetchMarket', { ..., blockNumber }])) must be updated. staleTime no longer defaults to Infinity when blockNumber is provided.
1 parent cdba338 commit 4331527

33 files changed

+123
-110
lines changed

packages/blue-sdk-wagmi/src/hooks/useHolding.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,6 @@ export function useHolding<
4949
enabled:
5050
parameters.user != null && parameters.token != null && query.enabled,
5151
structuralSharing: query.structuralSharing ?? replaceDeepEqual,
52-
staleTime:
53-
query.staleTime ??
54-
(parameters.blockNumber != null ? Number.POSITIVE_INFINITY : undefined),
52+
staleTime: query.staleTime,
5553
});
5654
}

packages/blue-sdk-wagmi/src/hooks/useHoldings.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,7 @@ export function useHoldings<
5454
}),
5555
enabled: holding.user != null && holding.token != null && query.enabled,
5656
structuralSharing: query.structuralSharing ?? replaceDeepEqual,
57-
staleTime:
58-
query.staleTime ??
59-
(parameters.blockNumber != null ? Number.POSITIVE_INFINITY : undefined),
57+
staleTime: query.staleTime,
6058
})),
6159
});
6260

packages/blue-sdk-wagmi/src/hooks/useMarket.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,6 @@ export function useMarket<
4848
...options,
4949
enabled: parameters.marketId != null && query.enabled,
5050
structuralSharing: query.structuralSharing ?? replaceDeepEqual,
51-
staleTime:
52-
query.staleTime ??
53-
(parameters.blockNumber != null ? Number.POSITIVE_INFINITY : undefined),
51+
staleTime: query.staleTime,
5452
});
5553
}

packages/blue-sdk-wagmi/src/hooks/useMarkets.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,7 @@ export function useMarkets<config extends Config = ResolvedRegister["config"]>({
4646
}),
4747
enabled: marketId != null && query.enabled,
4848
structuralSharing: query.structuralSharing ?? replaceDeepEqual,
49-
staleTime:
50-
query.staleTime ??
51-
(parameters.blockNumber != null ? Number.POSITIVE_INFINITY : undefined),
49+
staleTime: query.staleTime,
5250
})),
5351
});
5452

packages/blue-sdk-wagmi/src/hooks/usePosition.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,6 @@ export function usePosition<
5252
enabled:
5353
parameters.user != null && parameters.marketId != null && query.enabled,
5454
structuralSharing: query.structuralSharing ?? replaceDeepEqual,
55-
staleTime:
56-
query.staleTime ??
57-
(parameters.blockNumber != null ? Number.POSITIVE_INFINITY : undefined),
55+
staleTime: query.staleTime,
5856
});
5957
}

packages/blue-sdk-wagmi/src/hooks/usePositions.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,9 +55,7 @@ export function usePositions<
5555
enabled:
5656
position.user != null && position.marketId != null && query.enabled,
5757
structuralSharing: query.structuralSharing ?? replaceDeepEqual,
58-
staleTime:
59-
query.staleTime ??
60-
(parameters.blockNumber != null ? Number.POSITIVE_INFINITY : undefined),
58+
staleTime: query.staleTime,
6159
})),
6260
});
6361

packages/blue-sdk-wagmi/src/hooks/useToken.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,6 @@ export function useToken<
4343
...options,
4444
enabled: parameters.token != null && query.enabled,
4545
structuralSharing: query.structuralSharing ?? replaceDeepEqual,
46-
staleTime:
47-
query.staleTime ??
48-
(parameters.blockNumber != null ? Number.POSITIVE_INFINITY : undefined),
46+
staleTime: query.staleTime,
4947
});
5048
}

packages/blue-sdk-wagmi/src/hooks/useTokens.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,9 +45,7 @@ export function useTokens<config extends Config = ResolvedRegister["config"]>({
4545
}),
4646
enabled: token != null && query.enabled,
4747
structuralSharing: query.structuralSharing ?? replaceDeepEqual,
48-
staleTime:
49-
query.staleTime ??
50-
(parameters.blockNumber != null ? Number.POSITIVE_INFINITY : undefined),
48+
staleTime: query.staleTime,
5149
})),
5250
});
5351

packages/blue-sdk-wagmi/src/hooks/useUser.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,6 @@ export function useUser<
4343
...options,
4444
enabled: parameters.user != null && query.enabled,
4545
structuralSharing: query.structuralSharing ?? replaceDeepEqual,
46-
staleTime:
47-
query.staleTime ??
48-
(parameters.blockNumber != null ? Number.POSITIVE_INFINITY : undefined),
46+
staleTime: query.staleTime,
4947
});
5048
}

packages/blue-sdk-wagmi/src/hooks/useUsers.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,9 +45,7 @@ export function useUsers<config extends Config = ResolvedRegister["config"]>({
4545
}),
4646
enabled: user != null && query.enabled,
4747
structuralSharing: query.structuralSharing ?? replaceDeepEqual,
48-
staleTime:
49-
query.staleTime ??
50-
(parameters.blockNumber != null ? Number.POSITIVE_INFINITY : undefined),
48+
staleTime: query.staleTime,
5149
})),
5250
});
5351

0 commit comments

Comments
 (0)