* add validator flag no-accounts-db-index-hashing (#15350)
* add validator flag no_accounts_db_index_hashing
* add validator flag no_accounts_db_index_hashing
(cherry picked from commit ba02452d75
)
# Conflicts:
# runtime/src/accounts_background_service.rs
* fix merge error
Co-authored-by: Jeff Washington (jwash) <75863576+jeffwashington@users.noreply.github.com>
Co-authored-by: Jeff Washington (jwash) <wash678@gmail.com>
This commit is contained in:
@ -80,6 +80,7 @@ pub struct TvuConfig {
|
|||||||
pub accounts_hash_fault_injection_slots: u64,
|
pub accounts_hash_fault_injection_slots: u64,
|
||||||
pub accounts_db_caching_enabled: bool,
|
pub accounts_db_caching_enabled: bool,
|
||||||
pub test_hash_calculation: bool,
|
pub test_hash_calculation: bool,
|
||||||
|
pub use_index_hash_calculation: bool,
|
||||||
pub rocksdb_compaction_interval: Option<u64>,
|
pub rocksdb_compaction_interval: Option<u64>,
|
||||||
pub rocksdb_max_compaction_jitter: Option<u64>,
|
pub rocksdb_max_compaction_jitter: Option<u64>,
|
||||||
}
|
}
|
||||||
@ -282,6 +283,7 @@ impl Tvu {
|
|||||||
accounts_background_request_handler,
|
accounts_background_request_handler,
|
||||||
tvu_config.accounts_db_caching_enabled,
|
tvu_config.accounts_db_caching_enabled,
|
||||||
tvu_config.test_hash_calculation,
|
tvu_config.test_hash_calculation,
|
||||||
|
tvu_config.use_index_hash_calculation,
|
||||||
);
|
);
|
||||||
|
|
||||||
Tvu {
|
Tvu {
|
||||||
|
@ -124,6 +124,7 @@ pub struct ValidatorConfig {
|
|||||||
pub accounts_db_caching_enabled: bool,
|
pub accounts_db_caching_enabled: bool,
|
||||||
pub warp_slot: Option<Slot>,
|
pub warp_slot: Option<Slot>,
|
||||||
pub accounts_db_test_hash_calculation: bool,
|
pub accounts_db_test_hash_calculation: bool,
|
||||||
|
pub accounts_db_use_index_hash_calculation: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Default for ValidatorConfig {
|
impl Default for ValidatorConfig {
|
||||||
@ -174,6 +175,7 @@ impl Default for ValidatorConfig {
|
|||||||
accounts_db_caching_enabled: false,
|
accounts_db_caching_enabled: false,
|
||||||
warp_slot: None,
|
warp_slot: None,
|
||||||
accounts_db_test_hash_calculation: false,
|
accounts_db_test_hash_calculation: false,
|
||||||
|
accounts_db_use_index_hash_calculation: true,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -648,6 +650,7 @@ impl Validator {
|
|||||||
accounts_hash_fault_injection_slots: config.accounts_hash_fault_injection_slots,
|
accounts_hash_fault_injection_slots: config.accounts_hash_fault_injection_slots,
|
||||||
accounts_db_caching_enabled: config.accounts_db_caching_enabled,
|
accounts_db_caching_enabled: config.accounts_db_caching_enabled,
|
||||||
test_hash_calculation: config.accounts_db_test_hash_calculation,
|
test_hash_calculation: config.accounts_db_test_hash_calculation,
|
||||||
|
use_index_hash_calculation: config.accounts_db_use_index_hash_calculation,
|
||||||
rocksdb_compaction_interval: config.rocksdb_compaction_interval,
|
rocksdb_compaction_interval: config.rocksdb_compaction_interval,
|
||||||
rocksdb_max_compaction_jitter: config.rocksdb_compaction_interval,
|
rocksdb_max_compaction_jitter: config.rocksdb_compaction_interval,
|
||||||
},
|
},
|
||||||
|
@ -220,7 +220,7 @@ mod tests {
|
|||||||
// set_root should send a snapshot request
|
// set_root should send a snapshot request
|
||||||
bank_forks.set_root(bank.slot(), &request_sender, None);
|
bank_forks.set_root(bank.slot(), &request_sender, None);
|
||||||
bank.update_accounts_hash();
|
bank.update_accounts_hash();
|
||||||
snapshot_request_handler.handle_snapshot_requests(false, false);
|
snapshot_request_handler.handle_snapshot_requests(false, false, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -81,6 +81,7 @@ impl SnapshotRequestHandler {
|
|||||||
&self,
|
&self,
|
||||||
accounts_db_caching_enabled: bool,
|
accounts_db_caching_enabled: bool,
|
||||||
test_hash_calculation: bool,
|
test_hash_calculation: bool,
|
||||||
|
use_index_hash_calculation: bool,
|
||||||
) -> Option<u64> {
|
) -> Option<u64> {
|
||||||
self.snapshot_request_receiver
|
self.snapshot_request_receiver
|
||||||
.try_iter()
|
.try_iter()
|
||||||
@ -122,9 +123,10 @@ impl SnapshotRequestHandler {
|
|||||||
|
|
||||||
let mut hash_time = Measure::start("hash_time");
|
let mut hash_time = Measure::start("hash_time");
|
||||||
let mut hash_for_testing = None;
|
let mut hash_for_testing = None;
|
||||||
const USE_INDEX: bool = true;
|
snapshot_root_bank.update_accounts_hash_with_index_option(
|
||||||
snapshot_root_bank
|
!use_index_hash_calculation,
|
||||||
.update_accounts_hash_with_index_option(!USE_INDEX, test_hash_calculation);
|
test_hash_calculation,
|
||||||
|
);
|
||||||
if test_hash_calculation {
|
if test_hash_calculation {
|
||||||
hash_for_testing = Some(snapshot_root_bank.get_accounts_hash());
|
hash_for_testing = Some(snapshot_root_bank.get_accounts_hash());
|
||||||
}
|
}
|
||||||
@ -231,12 +233,16 @@ impl ABSRequestHandler {
|
|||||||
&self,
|
&self,
|
||||||
accounts_db_caching_enabled: bool,
|
accounts_db_caching_enabled: bool,
|
||||||
test_hash_calculation: bool,
|
test_hash_calculation: bool,
|
||||||
|
use_index_hash_calculation: bool,
|
||||||
) -> Option<u64> {
|
) -> Option<u64> {
|
||||||
self.snapshot_request_handler
|
self.snapshot_request_handler
|
||||||
.as_ref()
|
.as_ref()
|
||||||
.and_then(|snapshot_request_handler| {
|
.and_then(|snapshot_request_handler| {
|
||||||
snapshot_request_handler
|
snapshot_request_handler.handle_snapshot_requests(
|
||||||
.handle_snapshot_requests(accounts_db_caching_enabled, test_hash_calculation)
|
accounts_db_caching_enabled,
|
||||||
|
test_hash_calculation,
|
||||||
|
use_index_hash_calculation,
|
||||||
|
)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -262,6 +268,7 @@ impl AccountsBackgroundService {
|
|||||||
request_handler: ABSRequestHandler,
|
request_handler: ABSRequestHandler,
|
||||||
accounts_db_caching_enabled: bool,
|
accounts_db_caching_enabled: bool,
|
||||||
test_hash_calculation: bool,
|
test_hash_calculation: bool,
|
||||||
|
use_index_hash_calculation: bool,
|
||||||
) -> Self {
|
) -> Self {
|
||||||
info!("AccountsBackgroundService active");
|
info!("AccountsBackgroundService active");
|
||||||
let exit = exit.clone();
|
let exit = exit.clone();
|
||||||
@ -304,8 +311,11 @@ impl AccountsBackgroundService {
|
|||||||
// request for `N` to the snapshot request channel before setting a root `R > N`, and
|
// request for `N` to the snapshot request channel before setting a root `R > N`, and
|
||||||
// snapshot_request_handler.handle_requests() will always look for the latest
|
// snapshot_request_handler.handle_requests() will always look for the latest
|
||||||
// available snapshot in the channel.
|
// available snapshot in the channel.
|
||||||
let snapshot_block_height = request_handler
|
let snapshot_block_height = request_handler.handle_snapshot_requests(
|
||||||
.handle_snapshot_requests(accounts_db_caching_enabled, test_hash_calculation);
|
accounts_db_caching_enabled,
|
||||||
|
test_hash_calculation,
|
||||||
|
use_index_hash_calculation,
|
||||||
|
);
|
||||||
if accounts_db_caching_enabled {
|
if accounts_db_caching_enabled {
|
||||||
// Note that the flush will do an internal clean of the
|
// Note that the flush will do an internal clean of the
|
||||||
// cache up to bank.slot(), so should be safe as long
|
// cache up to bank.slot(), so should be safe as long
|
||||||
|
@ -1438,6 +1438,11 @@ pub fn main() {
|
|||||||
.long("accounts-db-test-hash-calculation")
|
.long("accounts-db-test-hash-calculation")
|
||||||
.help("Enables testing of hash calculation using stores in AccountsHashVerifier. This has a computational cost."),
|
.help("Enables testing of hash calculation using stores in AccountsHashVerifier. This has a computational cost."),
|
||||||
)
|
)
|
||||||
|
.arg(
|
||||||
|
Arg::with_name("no_accounts_db_index_hashing")
|
||||||
|
.long("no-accounts-db-index-hashing")
|
||||||
|
.help("Disables the use of the index in hash calculation in AccountsHashVerifier/Accounts Background Service."),
|
||||||
|
)
|
||||||
.arg(
|
.arg(
|
||||||
// legacy nop argument
|
// legacy nop argument
|
||||||
Arg::with_name("accounts_db_caching_enabled")
|
Arg::with_name("accounts_db_caching_enabled")
|
||||||
@ -1649,6 +1654,7 @@ pub fn main() {
|
|||||||
account_indexes,
|
account_indexes,
|
||||||
accounts_db_caching_enabled: !matches.is_present("no_accounts_db_caching"),
|
accounts_db_caching_enabled: !matches.is_present("no_accounts_db_caching"),
|
||||||
accounts_db_test_hash_calculation: matches.is_present("accounts_db_test_hash_calculation"),
|
accounts_db_test_hash_calculation: matches.is_present("accounts_db_test_hash_calculation"),
|
||||||
|
accounts_db_use_index_hash_calculation: !matches.is_present("no_accounts_db_index_hashing"),
|
||||||
..ValidatorConfig::default()
|
..ValidatorConfig::default()
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user