One chain has stopped advancing while the indexer pod stays Ready, because the indexer parked it after a chain reorganisation repair it refused. Read the fork block from the log and compare it with the chain's rollup_block and finality_block: a restart heals the park when the fork is higher than both, and a rebuild is the only fix when it is not. For a chain that is only behind, or for a pod that restarts, start with Ledger indexing stalled instead.
Each indexer loop advances one chain. When a loop hits a failure that a retry cannot fix, the indexer parks that chain and keeps the other chains running. A parked chain stops advancing, so Ledger Data for it freezes at the last indexed block while the network moves on.
A chain reorganisation is a change in the chain's recent blocks. The indexer keeps undo data for every block above the rollup_block of the chain's row in idxr_chain_watermark. It can rewind to any block above rollup_block and above finality_block. It cannot rewind below them.
The park lives in memory only. A restart of the indexer clears it.
Symptoms
- A chain stops advancing and the pod stays
Ready. The probes answer for the process, not for chain state. - The indexer log holds the line
EVM span chain parked; its siblings continue. - The failure the line names has the tag
repair. The failure text readsRepair stopped <reason> at retained floor <block>.
Checks
-
Search the indexer logs for
EVM span chain parked; its siblings continue. The line carries the chain and the failure that parked it. A park for another failure tag is not this runbook: use Ledger indexing stalled. -
Read the failure text. The fork block is the
positionof therepairfailure. The retained floor is the number afterat retained floor. The reason is one ofbelow-retained-floor,at-or-below-finality, orbeyond-repair-depth. -
Read the stored reach for the chain from the database:
SELECT chain_id, committed_block, rollup_block, finality_block FROM idxr_chain_watermark WHERE chain_id = <chain id>;Run it in the indexer schema of the instance.
-
Compare the fork block with
rollup_blockandfinality_block:- The fork block is above both. Undo data exists for it, so the indexer can repair it.
- The fork block is below
rollup_block, or at or belowfinality_block. The indexer has no undo data to rewind to.
Actions
- If the fork block is above
rollup_blockand abovefinality_block, restart the indexer deployment. The first attempt after the restart verifies the chain before it writes toidxr_chain_watermark, finds the common ancestor above the rollup floor, rewinds to it, and continues. Reach comes from the storedrollup_blockandfinality_block, so a chain that was down for more than 64 blocks still repairs. - If the fork block is below
rollup_block, or at or belowfinality_block, a restart parks the chain again. The data needed to rewind is gone. Rebuild through a reindex. A platform administrator starts one withPOST /api/, naming the chain'sv2/ admin/ operator/ blockchain- monitoring/ reindexes chainId. A reindex rebuilds the indexed data of every network at once, and only one runs at a time. It indexes again from each network's start block into a new dataset while the current one keeps serving, so reads for the parked chain stay frozen at its last indexed block until the new dataset takes over. Upgrades and migrations explains how a rebuild runs, and the Indexing detail page on the Console's Platform status screen shows the chain as Reindexing until it drains.
Verify recovery
After a restart, committed_block for the chain advances and the indexer logs no new park line for it. After a rebuild, the chain leaves “Reindexing” on the Indexing detail page.
Escalate
If the chain parks again after a restart with a fork block higher than both values, escalate to your DALP support contact as a platform defect. Include the chain id, the park line, the failure text, and the row from idxr_chain_watermark.