linera-io/linera-protocol · error · ChainClientError
The state of the client is incompatible with the proposed bl
Error message
The state of the client is incompatible with the proposed block: Client state already has a pending block; use the `linera retry-pending-block` command to commit that first
What it means
Error "The state of the client is incompatible with the proposed block: Client state already has a pending block; use the `linera retry-pending-block` command to commit that first" thrown in linera-io/linera-protocol.
Source
Thrown at linera-core/src/client/chain_client/mod.rs:1635
)
.chain(operations.into_iter().map(Transaction::ExecuteOperation))
.collect::<Vec<_>>())
}
/// Creates a new pending block and stores it in `proposal_guard`.
///
/// The caller must hold the proposal mutex. The pending proposal is written directly
/// into the guard so that it is always synchronized with the mutex.
#[instrument(level = "trace", skip(transactions, blobs, proposal_guard))]
async fn new_pending_block(
&self,
transactions: Vec<Transaction>,
blobs: Vec<Blob>,
proposal_guard: &mut Option<PendingProposal>,
) -> Result<Block, Error> {
let identity = self.identity().await?;
ensure!(
proposal_guard.is_none(),
Error::BlockProposalError(
"Client state already has a pending block; \
use the `linera retry-pending-block` command to commit that first"
)
);
let info = self.chain_info().await?;
let timestamp = self.next_timestamp(&transactions, info.timestamp);
let proposed_block = ProposedBlock {
epoch: info.epoch,
chain_id: self.chain_id,
transactions,
previous_block_hash: info.block_hash,
height: info.next_block_height,
authenticated_owner: Some(identity),
timestamp,
};
View on GitHub (pinned to 6c226ddcb3)
Solutions
- Run `linera retry-pending-block` to commit the existing pending block, then retry the new block proposal.
- If the pending block is no longer desired, clear it with `linera clear-pending-block` (after confirming it can be discarded) before proposing again.
- Avoid starting a second proposal while a previous one is still pending; wait for or resolve the first proposal.
When it happens
Trigger: A new block proposal is made while the client state still holds an uncommitted pending block.
Common situations: A previous proposal failed to commit (e.g. network issue); resolve it with `linera retry-pending-block` before proposing again.
AI-assisted analysis of linera-io/linera-protocol@6c226ddcb3 (2026-08-22).
Data as JSON: /api/errors/bda18be8d992f40c.
Report an issue: GitHub.