Skip to content

Lock poisoning causes cascading panics in ValidatorSetManager #75

@qj0r9j0vc2

Description

@qj0r9j0vc2

Problem

The ValidatorSetManager in crates/consensus/src/validator_set_manager.rs uses expect("lock poisoned") for all RwLock operations, which will cause cascading panics if any thread holding a lock panics.

Details

Multiple occurrences throughout the file:

*self.current_epoch.read().expect("lock poisoned")
let mut sets = self.sets.write().expect("lock poisoned")
let mut pending = self.pending_next_epoch.write().expect("lock poisoned")

Similar patterns exist in:

  • crates/rpc/src/middleware.rs (rate limiter locks)
  • crates/consensus/src/validator_set_manager.rs (InMemoryValidatorSetStorage)

Impact

  • If any consensus thread panics while holding a lock, all subsequent validator set operations will panic
  • Node becomes unrecoverable without restart
  • No graceful degradation or error logging

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions