Skip to content

Commit 0ea98ea

Browse files
authored
fix(pxe): warn when block header unavailable for proven/finalized events (backport #22050) (#22547)
## Summary Backport of #22050 to v4-next. Cherry-pick applied cleanly. The noir-projects change from the original PR was already present on v4-next, so only the PXE block_synchronizer changes were needed. ### Changes - Adds warning logs in PXE block synchronizer when `getBlockHeader` returns null for `chain-proven` and `chain-finalized` events, instead of silently skipping the anchor update - Adds a comment clarifying the local promise capture pattern in `sync()` ClaudeBox log: https://claudebox.work/s/017ec0a44d097055?run=1
2 parents ebf6ca0 + 8d92652 commit 0ea98ea

1 file changed

Lines changed: 6 additions & 0 deletions

File tree

yarn-project/pxe/src/block_synchronizer/block_synchronizer.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,8 @@ export class BlockSynchronizer implements L2BlockStreamEventHandler {
7777
const blockHeader = await this.node.getBlockHeader(BlockNumber(event.block.number));
7878
if (blockHeader) {
7979
await this.updateAnchorBlockHeader(blockHeader);
80+
} else {
81+
this.log.warn(`Block header not found for proven block ${event.block.number}, skipping anchor update`);
8082
}
8183
}
8284
break;
@@ -86,6 +88,8 @@ export class BlockSynchronizer implements L2BlockStreamEventHandler {
8688
const blockHeader = await this.node.getBlockHeader(BlockNumber(event.block.number));
8789
if (blockHeader) {
8890
await this.updateAnchorBlockHeader(blockHeader);
91+
} else {
92+
this.log.warn(`Block header not found for finalized block ${event.block.number}, skipping anchor update`);
8993
}
9094
}
9195
break;
@@ -152,6 +156,8 @@ export class BlockSynchronizer implements L2BlockStreamEventHandler {
152156
}
153157

154158
this.log.debug(`Syncing PXE with the node`);
159+
// Capture the promise locally so we always await the exact promise we created, even if this.isSyncing is modified
160+
// between assignment and await (e.g. due to future refactors introducing a yield point).
155161
const isSyncing = this.doSync();
156162
this.isSyncing = isSyncing;
157163
try {

0 commit comments

Comments
 (0)