diff --git a/prdoc/pr_9861.prdoc b/prdoc/pr_9861.prdoc new file mode 100644 index 0000000000000..03500b13bf5b2 --- /dev/null +++ b/prdoc/pr_9861.prdoc @@ -0,0 +1,10 @@ +title: Fix deadlock in statement store + +doc: + - audience: [Node Dev, Runtime Dev, Node Operator] + description: | + Fix a deadlock in the statement store that could occur under high load. + +crates: +- name: sc-statement-store + bump: patch diff --git a/substrate/client/statement-store/src/lib.rs b/substrate/client/statement-store/src/lib.rs index e58440eccbbe8..54378ce60b180 100644 --- a/substrate/client/statement-store/src/lib.rs +++ b/substrate/client/statement-store/src/lib.rs @@ -764,7 +764,7 @@ impl StatementStore for Store { fn statements(&self) -> Result> { let index = self.index.read(); let mut result = Vec::with_capacity(index.entries.len()); - for h in self.index.read().entries.keys() { + for h in index.entries.keys() { let encoded = self.db.get(col::STATEMENTS, h).map_err(|e| Error::Db(e.to_string()))?; if let Some(encoded) = encoded { if let Ok(statement) = Statement::decode(&mut encoded.as_slice()) {