fix: remove premature on_valid_payload_envelope_received + disable backfill for GLOaS

1. Remove on_valid_payload_envelope_received call before process_block
   in chain segment import. The block isn't in fork choice yet, so it
   always fails with NodeUnknown. import_envelope_from_range_sync
   handles this correctly after process_block.

2. Disable backfill sync when GLOaS is scheduled. Backfill calls
   into_available_block which panics on GLOaS RangeSyncBlock variant.
   Backfill for GLOaS is not yet implemented.
This commit is contained in:
Eitan Seri-Levi
2026-05-07 13:47:55 +00:00
parent e906208ae0
commit f818612795
2 changed files with 9 additions and 12 deletions

View File

@@ -3257,18 +3257,10 @@ impl<T: BeaconChainTypes> BeaconChain<T> {
error: BlockError::BeaconChainError(Box::new(e.into())),
};
}
if let Err(e) = self
.canonical_head
.fork_choice_write_lock()
.on_valid_payload_envelope_received(block_root)
{
return ChainSegmentResult::Failed {
imported_blocks,
error: BlockError::BeaconChainError(Box::new(
BeaconChainError::ForkChoiceError(e),
)),
};
}
// Note: we do NOT call on_valid_payload_envelope_received here
// because the block hasn't been added to fork choice yet (that
// happens in process_block below). The fork choice update is
// handled by import_envelope_from_range_sync after process_block.
}
match self

View File

@@ -215,6 +215,11 @@ impl<T: BeaconChainTypes> BackFillSync<T> {
&mut self,
network: &mut SyncNetworkContext<T>,
) -> Result<SyncStart, BackFillError> {
// Skip backfill sync for GLOaS — not yet implemented for this fork.
if self.beacon_chain.spec.gloas_fork_epoch.is_some_and(|e| e != Epoch::max_value()) {
return Ok(SyncStart::NotSyncing);
}
match self.state() {
BackFillState::Syncing => {} // already syncing ignore.
BackFillState::Paused => {