rename is_pruned to is_prunable (#10888)
This commit is contained in:
		
							parent
							
								
									e3665ed9e3
								
							
						
					
					
						commit
						27d1c2d7d1
					
				@ -14,7 +14,7 @@
 | 
			
		||||
// You should have received a copy of the GNU General Public License
 | 
			
		||||
// along with Parity Ethereum.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 | 
			
		||||
use std::cmp;
 | 
			
		||||
use std::{cmp, ops};
 | 
			
		||||
use std::collections::{HashSet, BTreeMap, VecDeque};
 | 
			
		||||
use std::sync::atomic::{AtomicUsize, AtomicBool, Ordering as AtomicOrdering};
 | 
			
		||||
use std::sync::{Arc, Weak};
 | 
			
		||||
@ -118,12 +118,12 @@ impl ClientReport {
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
impl<'a> ::std::ops::Sub<&'a ClientReport> for ClientReport {
 | 
			
		||||
impl<'a> ops::Sub<&'a ClientReport> for ClientReport {
 | 
			
		||||
	type Output = Self;
 | 
			
		||||
 | 
			
		||||
	fn sub(mut self, other: &'a ClientReport) -> Self {
 | 
			
		||||
		let higher_mem = ::std::cmp::max(self.state_db_mem, other.state_db_mem);
 | 
			
		||||
		let lower_mem = ::std::cmp::min(self.state_db_mem, other.state_db_mem);
 | 
			
		||||
		let higher_mem = cmp::max(self.state_db_mem, other.state_db_mem);
 | 
			
		||||
		let lower_mem = cmp::min(self.state_db_mem, other.state_db_mem);
 | 
			
		||||
 | 
			
		||||
		self.blocks_imported -= other.blocks_imported;
 | 
			
		||||
		self.transactions_applied -= other.transactions_applied;
 | 
			
		||||
@ -248,7 +248,7 @@ impl Importer {
 | 
			
		||||
		engine: Arc<dyn Engine>,
 | 
			
		||||
		message_channel: IoChannel<ClientIoMessage>,
 | 
			
		||||
		miner: Arc<Miner>,
 | 
			
		||||
	) -> Result<Importer, ::error::Error> {
 | 
			
		||||
	) -> Result<Importer, EthcoreError> {
 | 
			
		||||
		let block_queue = BlockQueue::new(config.queue.clone(), engine.clone(), message_channel.clone(), config.verifier_type.verifying_seal());
 | 
			
		||||
 | 
			
		||||
		Ok(Importer {
 | 
			
		||||
@ -704,7 +704,7 @@ impl Client {
 | 
			
		||||
		db: Arc<dyn BlockChainDB>,
 | 
			
		||||
		miner: Arc<Miner>,
 | 
			
		||||
		message_channel: IoChannel<ClientIoMessage>,
 | 
			
		||||
	) -> Result<Arc<Client>, ::error::Error> {
 | 
			
		||||
	) -> Result<Arc<Client>, EthcoreError> {
 | 
			
		||||
		let trie_spec = match config.fat_db {
 | 
			
		||||
			true => TrieSpec::Fat,
 | 
			
		||||
			false => TrieSpec::Secure,
 | 
			
		||||
@ -950,7 +950,11 @@ impl Client {
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// prune ancient states until below the memory limit or only the minimum amount remain.
 | 
			
		||||
	fn prune_ancient(&self, mut state_db: StateDB, chain: &BlockChain) -> Result<(), ::error::Error> {
 | 
			
		||||
	fn prune_ancient(&self, mut state_db: StateDB, chain: &BlockChain) -> Result<(), EthcoreError> {
 | 
			
		||||
		if !state_db.journal_db().is_prunable() {
 | 
			
		||||
			return Ok(())
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		let number = match state_db.journal_db().latest_era() {
 | 
			
		||||
			Some(n) => n,
 | 
			
		||||
			None => return Ok(()),
 | 
			
		||||
@ -959,10 +963,12 @@ impl Client {
 | 
			
		||||
		// prune all ancient eras until we're below the memory target,
 | 
			
		||||
		// but have at least the minimum number of states.
 | 
			
		||||
		loop {
 | 
			
		||||
			let needs_pruning = state_db.journal_db().is_pruned() &&
 | 
			
		||||
				state_db.journal_db().journal_size() >= self.config.history_mem;
 | 
			
		||||
			let needs_pruning = state_db.journal_db().journal_size() >= self.config.history_mem;
 | 
			
		||||
 | 
			
		||||
			if !needs_pruning {
 | 
			
		||||
				break
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			if !needs_pruning { break }
 | 
			
		||||
			match state_db.journal_db().earliest_era() {
 | 
			
		||||
				Some(era) if era + self.history <= number => {
 | 
			
		||||
					trace!(target: "client", "Pruning state for ancient era {}", era);
 | 
			
		||||
@ -1048,7 +1054,7 @@ impl Client {
 | 
			
		||||
			let db = self.state_db.read().boxed_clone();
 | 
			
		||||
 | 
			
		||||
			// early exit for pruned blocks
 | 
			
		||||
			if db.is_pruned() && self.pruning_info().earliest_state > block_number {
 | 
			
		||||
			if db.is_prunable() && self.pruning_info().earliest_state > block_number {
 | 
			
		||||
				return None;
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
@ -1147,16 +1153,16 @@ impl Client {
 | 
			
		||||
		let best_block_number = self.chain_info().best_block_number;
 | 
			
		||||
		let block_number = self.block_number(at).ok_or_else(|| snapshot::Error::InvalidStartingBlock(at))?;
 | 
			
		||||
 | 
			
		||||
		if db.is_pruned() && self.pruning_info().earliest_state > block_number {
 | 
			
		||||
		if db.is_prunable() && self.pruning_info().earliest_state > block_number {
 | 
			
		||||
			return Err(snapshot::Error::OldBlockPrunedDB.into());
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		let history = ::std::cmp::min(self.history, 1000);
 | 
			
		||||
		let history = cmp::min(self.history, 1000);
 | 
			
		||||
 | 
			
		||||
		let start_hash = match at {
 | 
			
		||||
			BlockId::Latest => {
 | 
			
		||||
				let start_num = match db.earliest_era() {
 | 
			
		||||
					Some(era) => ::std::cmp::max(era, best_block_number.saturating_sub(history)),
 | 
			
		||||
					Some(era) => cmp::max(era, best_block_number.saturating_sub(history)),
 | 
			
		||||
					None => best_block_number.saturating_sub(history),
 | 
			
		||||
				};
 | 
			
		||||
 | 
			
		||||
@ -1172,7 +1178,7 @@ impl Client {
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		let processing_threads = self.config.snapshot.processing_threads;
 | 
			
		||||
		let chunker = self.engine.snapshot_components().ok_or(snapshot::Error::SnapshotsUnsupported)?;
 | 
			
		||||
		let chunker = self.engine.snapshot_components().ok_or_else(|| snapshot::Error::SnapshotsUnsupported)?;
 | 
			
		||||
		snapshot::take_snapshot(
 | 
			
		||||
			chunker,
 | 
			
		||||
			&self.chain.read(),
 | 
			
		||||
@ -1673,7 +1679,7 @@ impl BadBlocks for Client {
 | 
			
		||||
 | 
			
		||||
impl BlockChainClient for Client {
 | 
			
		||||
	fn replay(&self, id: TransactionId, analytics: CallAnalytics) -> Result<Executed, CallError> {
 | 
			
		||||
		let address = self.transaction_address(id).ok_or(CallError::TransactionNotFound)?;
 | 
			
		||||
		let address = self.transaction_address(id).ok_or_else(|| CallError::TransactionNotFound)?;
 | 
			
		||||
		let block = BlockId::Hash(address.block_hash);
 | 
			
		||||
 | 
			
		||||
		const PROOF: &'static str = "The transaction address contains a valid index within block; qed";
 | 
			
		||||
@ -1681,9 +1687,9 @@ impl BlockChainClient for Client {
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	fn replay_block_transactions(&self, block: BlockId, analytics: CallAnalytics) -> Result<Box<dyn Iterator<Item = (H256, Executed)>>, CallError> {
 | 
			
		||||
		let mut env_info = self.env_info(block).ok_or(CallError::StatePruned)?;
 | 
			
		||||
		let body = self.block_body(block).ok_or(CallError::StatePruned)?;
 | 
			
		||||
		let mut state = self.state_at_beginning(block).ok_or(CallError::StatePruned)?;
 | 
			
		||||
		let mut env_info = self.env_info(block).ok_or_else(|| CallError::StatePruned)?;
 | 
			
		||||
		let body = self.block_body(block).ok_or_else(|| CallError::StatePruned)?;
 | 
			
		||||
		let mut state = self.state_at_beginning(block).ok_or_else(|| CallError::StatePruned)?;
 | 
			
		||||
		let txs = body.transactions();
 | 
			
		||||
		let engine = self.engine.clone();
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -360,8 +360,8 @@ impl StateDB {
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/// Check if pruning is enabled on the database.
 | 
			
		||||
	pub fn is_pruned(&self) -> bool {
 | 
			
		||||
		self.db.is_pruned()
 | 
			
		||||
	pub fn is_prunable(&self) -> bool {
 | 
			
		||||
		self.db.is_prunable()
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/// Heap size used.
 | 
			
		||||
 | 
			
		||||
@ -191,7 +191,7 @@ impl JournalDB for ArchiveDB {
 | 
			
		||||
		self.backing.get_by_prefix(self.column, &id[0..DB_PREFIX_LEN]).map(|b| b.into_vec())
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	fn is_pruned(&self) -> bool { false }
 | 
			
		||||
	fn is_prunable(&self) -> bool { false }
 | 
			
		||||
 | 
			
		||||
	fn backing(&self) -> &Arc<dyn KeyValueDB> {
 | 
			
		||||
		&self.backing
 | 
			
		||||
 | 
			
		||||
@ -83,7 +83,7 @@ pub trait JournalDB: KeyedHashDB {
 | 
			
		||||
	fn state(&self, _id: &H256) -> Option<Bytes>;
 | 
			
		||||
 | 
			
		||||
	/// Whether this database is pruned.
 | 
			
		||||
	fn is_pruned(&self) -> bool { true }
 | 
			
		||||
	fn is_prunable(&self) -> bool { true }
 | 
			
		||||
 | 
			
		||||
	/// Get backing database.
 | 
			
		||||
	fn backing(&self) -> &Arc<dyn kvdb::KeyValueDB>;
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user