client: fix justifications migration (#8489)

* client: rename variables

* client: fix justifications migration

* client: fix compilation
This commit is contained in:
André Silva
2021-03-30 12:08:05 +01:00
committed by GitHub
parent 19f9224e5d
commit 68d8b810c4
2 changed files with 10 additions and 5 deletions
+3 -3
View File
@@ -561,10 +561,10 @@ impl<Block: BlockT> sc_client_api::blockchain::Backend<Block> for BlockchainDb<B
fn justifications(&self, id: BlockId<Block>) -> ClientResult<Option<Justifications>> {
match read_db(&*self.db, columns::KEY_LOOKUP, columns::JUSTIFICATIONS, id)? {
Some(justification) => match Decode::decode(&mut &justification[..]) {
Ok(justification) => Ok(Some(justification)),
Some(justifications) => match Decode::decode(&mut &justifications[..]) {
Ok(justifications) => Ok(Some(justifications)),
Err(err) => return Err(sp_blockchain::Error::Backend(
format!("Error decoding justification: {}", err)
format!("Error decoding justifications: {}", err)
)),
}
None => Ok(None),
+7 -2
View File
@@ -25,7 +25,7 @@ use std::path::{Path, PathBuf};
use sp_runtime::traits::Block as BlockT;
use crate::{columns, utils::DatabaseType};
use kvdb_rocksdb::{Database, DatabaseConfig};
use codec::Encode;
use codec::{Decode, Encode};
/// Version file name.
const VERSION_FILE_NAME: &'static str = "db_version";
@@ -83,7 +83,12 @@ fn migrate_2_to_3<Block: BlockT>(db_path: &Path, _db_type: DatabaseType) -> sp_b
let mut transaction = db.transaction();
for key in keys {
if let Some(justification) = db.get(columns::JUSTIFICATIONS, &key).map_err(db_err)? {
// Tag each Justification with the hardcoded ID for GRANDPA. Avoid the dependency on the GRANDPA crate
// Tag each justification with the hardcoded ID for GRANDPA to avoid the dependency on
// the GRANDPA crate.
// NOTE: when storing justifications the previous API would get a `Vec<u8>` and still
// call encode on it.
let justification = Vec::<u8>::decode(&mut &justification[..])
.map_err(|_| sp_blockchain::Error::Backend("Invalid justification blob".into()))?;
let justifications = sp_runtime::Justifications::from((*b"FRNK", justification));
transaction.put_vec(columns::JUSTIFICATIONS, &key, justifications.encode());
}