StatusDeque split into separate objects with their own root checkpoint strategy (#2613)

Split up StatusDeque into different modules

* LastIdQueue tracks last_ids
* StatusCache keeps track of signature statuses
* StatusCache stores success as a bit in a bloom filter
* Overhead for 1m Ok transactions is 4mb in memory
* Less concurrency between the objects, last_id and status_cache are read and written to at different points in the pipeline
* Each object has its own strategy for merging into the root checkpoint
This commit is contained in:
anatoly yakovenko
2019-01-31 06:53:52 -08:00
committed by GitHub
parent 609e915169
commit 2754ceec60
12 changed files with 545 additions and 433 deletions

View File

@@ -4,7 +4,7 @@ extern crate test;
use solana::bank::*;
use solana::genesis_block::GenesisBlock;
use solana::status_deque::MAX_ENTRY_IDS;
use solana::last_id_queue::MAX_ENTRY_IDS;
use solana_sdk::hash::hash;
use solana_sdk::signature::{Keypair, KeypairUtil};
use solana_sdk::system_transaction::SystemTransaction;

View File

@@ -8,8 +8,8 @@ use solana::bank::Bank;
use solana::banking_stage::BankingStage;
use solana::entry::Entry;
use solana::genesis_block::GenesisBlock;
use solana::last_id_queue::MAX_ENTRY_IDS;
use solana::packet::to_packets_chunked;
use solana::status_deque::MAX_ENTRY_IDS;
use solana_sdk::hash::hash;
use solana_sdk::pubkey::Pubkey;
use solana_sdk::signature::{Keypair, KeypairUtil, Signature};