Skip to content
This repository has been archived by the owner on Jan 22, 2025. It is now read-only.
This repository has been archived by the owner on Jan 22, 2025. It is now read-only.

validator restart can generate "Cluster largest_confirmed_root x does not exist on node. Node root: y" #9921

Open
@mvines

Description

When a validator restarts, blockstore_processor filters out all roots older than the current root [1]. By the time it goes to create a BankForks [2], the cluster confirmed root requested at [3] is long gone.

Couple options I see:

  1. Introduce ForkProgress into blockstore_processor
  2. Update blockstore_processor to hang on to a couple hundred older roots to populate into BankForks [2] (which'll get pruned the first time BankForks::set_root() is called.

[1]

initial_forks.clear();

[2]
let bank_forks = BankForks::new_from_banks(&initial_forks, root);

[3]

solana/core/src/rpc.rs

Lines 102 to 113 in 627bc7e

r_bank_forks
.get(cluster_root)
.cloned()
.ok_or_else(|| Error {
code: ErrorCode::ServerError(JSON_RPC_SERVER_ERROR_0),
message: format!(
"Cluster largest_confirmed_root {} does not exist on node. Node root: {}",
cluster_root,
r_bank_forks.root(),
),
data: None,
})

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions