Skip to content

Commit 4b0a1c4

Browse files
committed
indexer: add reloadIfNeeded helper
1 parent b9d4e00 commit 4b0a1c4

3 files changed

Lines changed: 16 additions & 10 deletions

File tree

packages/indexer/src/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
export * from "./indexer";
22
export { useIndexerContext } from "./context";
3-
export * from "./utils";
3+
export { reloadIndexer, ReloadIndexerRequest } from "./utils";

packages/indexer/src/indexer.ts

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ import {
3333
import { createIndexerMetrics, createTracer } from "./otel";
3434
import type { IndexerPlugin } from "./plugins";
3535
import { useInternalContext } from "./plugins/context";
36-
import { ReloadIndexerRequest } from "./utils";
36+
import { reloadIfNeeded } from "./utils";
3737

3838
export type UseMiddlewareFunction = (
3939
fn: MiddlewareFunction<IndexerContext>,
@@ -318,10 +318,7 @@ export async function run<TFilter, TBlock>(
318318
},
319319
);
320320

321-
if (context._reload) {
322-
context._reload = false;
323-
throw new ReloadIndexerRequest();
324-
}
321+
reloadIfNeeded();
325322

326323
await middleware(context, async () => {
327324
let block: TBlock | null;
@@ -401,10 +398,7 @@ export async function run<TFilter, TBlock>(
401398
}
402399
});
403400

404-
if (context._reload) {
405-
context._reload = false;
406-
throw new ReloadIndexerRequest();
407-
}
401+
reloadIfNeeded();
408402

409403
span.end();
410404
});
@@ -444,7 +438,11 @@ export async function run<TFilter, TBlock>(
444438
}
445439
case "heartbeat": {
446440
await tracer.startActiveSpan("message heartbeat", async (span) => {
441+
reloadIfNeeded();
442+
447443
await indexer.hooks.callHook("message:heartbeat");
444+
reloadIfNeeded();
445+
448446
span.end();
449447
});
450448
break;

packages/indexer/src/utils/index.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,14 @@ export function reloadIndexer() {
55
context._reload = true;
66
}
77

8+
export function reloadIfNeeded() {
9+
const context = useIndexerContext();
10+
if (context._reload) {
11+
context._reload = false;
12+
throw new ReloadIndexerRequest();
13+
}
14+
}
15+
816
export class ReloadIndexerRequest extends Error {
917
constructor(message?: string) {
1018
super(message);

0 commit comments

Comments
 (0)