Skip to content

Message-block availability: StateSearchMsg fetches message blocks via bridge, stalls bridge-off #50

Description

@Reiers

Found via bridge-off write-confirm testing on cc-smoke (after #49)

With #49 fixed, StateSearchMsg now parses block message AMTs and ParentMessageReceipts correctly (no more 'wrong number of fields'). But resolving a receipt / tx-by-hash bridge-off now fails one layer deeper:

eth_getTransactionByHash: StateSearchMsg error, bridging
  err: block <blk> msgmeta: secp amt: https://api.calibration.node.glif.io/.../block/<msgblk>: context deadline exceeded

msgsearch.fetchMsgMetaenumerateAMTCIDs walks the message AMT and, when a message block (MsgMeta / AMT node / message body) isn't already in the embedded blockstore, asks the BlockGetter. In embedded curio-core that getter's source set includes the Glif HTTP fetcher; with --vm-bridge-rpc-disable those fetches time out, so StateSearchMsg errors and the receipt/by-hash path declines.

This is #44-class state availability, not an AMT or engine bug

Also observed: head-sync HTTP fallback points at Glif

On this bridge-off boot, chain/header/store/sync.go logged sync poll: Post https://…glif.io…: context deadline exceeded and gossipsub head-tracking sometimes took >30s to activate (flaky calibration libp2p peering). When gossipsub is healthy the head advances fine; when it isn't, the HTTP sync fallback is a hidden Glif dependency. Worth making the bridge-off mode refuse/!configure the HTTP sync fallback so the Glif dependency is explicit.

Fix direction

  1. Prefetch message + receipt blocks for recently-sent txs (or for the last N tipsets) into the embedded Bitswap cache, same mechanism as Embedded state-block availability for local eth_call (last blocker for --vm-bridge-rpc-disable) #44's storage-trie prefetch. A writing SP only needs its own in-flight txs' tipsets.
  2. Make msgsearch's BlockGetter use a bitswap-with-retry source bridge-off (mirror evmexec_fetch.go's retryingBlockGetter) so a momentarily-uncached block resolves on a 3-5s retry instead of erroring out.
  3. Ensure header-store HTTP sync fallback is disabled (not silently Glif) under --vm-bridge-rpc-disable.

Status

Metadata

Metadata

Assignees

No one assigned

    Labels

    architectureTrust model / swarm designenhancementNew feature or requestp2Medium priority

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions