linera-io/linera-protocol · error · WorkerError

Unexpected epoch {epoch}: chain {chain_id} is at {chain_epoc

Error message

Unexpected epoch {epoch}: chain {chain_id} is at {chain_epoch}

What it means

Error "Unexpected epoch {epoch}: chain {chain_id} is at {chain_epoch}" thrown in linera-io/linera-protocol.

Source

Thrown at linera-core/src/chain_worker/state.rs:2962

/// Returns the blob IDs whose corresponding value is `None`.
fn missing_blob_ids<'a>(
    maybe_blobs: impl IntoIterator<Item = (&'a BlobId, &'a Option<Blob>)>,
) -> Vec<BlobId> {
    maybe_blobs
        .into_iter()
        .filter(|(_, maybe_blob)| maybe_blob.is_none())
        .map(|(blob_id, _)| *blob_id)
        .collect()
}

/// Returns an error if the block is not at the expected epoch.
fn check_block_epoch(
    chain_epoch: Epoch,
    block_chain: ChainId,
    block_epoch: Epoch,
) -> Result<(), WorkerError> {
    ensure!(
        block_epoch == chain_epoch,
        WorkerError::InvalidEpoch {
            chain_id: block_chain,
            epoch: block_epoch,
            chain_epoch
        }
    );
    Ok(())
}

View on GitHub (pinned to 6c226ddcb3)

Solutions

  1. Update the local client to the current epoch: run `linera sync` and `linera process-inbox` so the chain epoch matches the committee epoch before resubmitting.
  2. If the epoch changed due to a validator set rotation, re-run `linera query-validators` / refresh committee info in the wallet and retry.
  3. Re-check that the message or certificate being handled was created for the current epoch; discard or re-create stale cross-chain messages from an old epoch.

When it happens

Trigger: A certificate or message carries an epoch that differs from the epoch the target chain is currently in, typically around a committee/epoch change.

Common situations: Using a certificate signed by an old validator set after an epoch transition, or querying a chain that has already advanced to a newer epoch.


AI-assisted analysis of linera-io/linera-protocol@6c226ddcb3 (2026-08-22). Data as JSON: /api/errors/3657b85489e4ec62. Report an issue: GitHub.