[DNM] PIBD Task / Issue Tracker (#3695)
* [PIBD_IMPL] Introduce PIBD state into sync workflow (#3685) * experimental addition of pibd download state for testnet only * fixes to bitmap number of segments calculation + conversion of bitmap accumulator to bitmap * attempt to call a test message * add p2p methods for receiving bitmap segment and applying to desegmenter associated with chain * fixes to state sync * add pibd receive messages to network, and basic calls to desegmenter from each (#3686) * [PIBD_IMPL] PIBD Desegmenter State (#3688) * add functions to desegmenter to report next desired segments, begin to add state to determine which segments have been requested * add segmentidentifier type to id requested segments uniquely * make a call on where to keep track of which PIBD segments have been requested * move segmenttype definition, add functions to manipulate peer segment list * remove desegmenter state enum * change chain desegmenter function to provide rwlock * trace, warning cleanup * udpate to test compliation * [PIBD_IMPL] Bitmap accumulator reconstruction + TxHashset set reconstruction (#3689) * application of received bitmap segments to local accumulator * add all required elements to send/receive output segment requests and responses * testing of output sync * add special cases to pmmr segment request * [PIBD_IMPL] PMMR Reassembly from Segments (#3690) * update pibd copy test to use new desgmenter structure * begin reconstruction of output pmmr * clean up hash/leaf insertion logic * push pruned subtree appears to be working, now also calculates left hand hashes correctly * factor out ordering of segment/hash order array * refactor for pmmr application code * test of chain copy appears to be working * add rangeproof functions to desegmenter * add kernel functions, attempt refactor * small test cleanup, reconstruction of live chain working in manual copy test * [PIBD_IMPL] PIBD tree sync via network and kill/resume functionality (#3691) * add functions to determing latest verifiable block height for the given pibd state * attempting to allow for pibd to resume after killing process * fix to ensure prune list is properly flushed during pibd sync * removal of unneeded code * ignore test for now (fix before full merge) * [PIBD_IMPL] Finalize PIBD download and move state to chain validation (#3692) * investigations as to why a slight rewind is needed on startup during PIBD * move validation code into desegmenter validation thread (for now) * ensure genesis entries in pmmrs are removed if they're removed in the first segment * validation all working except for verifying kernel sums * remove unneeded pmmr rollbacks on resume now root cause was found * updates to remove unpruned leaves from leaf set when rebuilding pmmr * remove + 1 to segment traversal iter length * [PIBD_IMPL] PIBD Stats + Retry on validation errors (#3694) * start to add stats and reset chain state after errors detected * add functions to reset prune list when resetting chain pibd state * debug statement * remove test function * [PIBD_IMPL] Update number of simultaneous peer requests for segments (#3696) * cleanup of segment request list * allow for more simultaneous requests during state sync * up number of simultaneous peer requests for segments * [PIBD_IMPL] Thread simplification + More TUI Updates + Stop State Propagation (#3698) * change pibd stat display to show progress as a percentage of downloaded leaves * attempt some inline rp validation * propagate shutdown state through kernel validation * change validation loop timing * simplify validator threading * add more detailed tracking of kernel history validation to tui, allow stop state during * adding more stop state + tui progress indication * remove progressive validate * test fix * revert to previous method of applying segments (#3699) * fix for deadlock issue (#3700) * update Cargo.lock for next release * [PIBD_IMPL] Catch-Up functionality + Fixes based on testing (#3702) * ensure desegmenter attempts to apply correct block after a resumte * ensure txhashset's committed implementation takes into account output bitmap for summing purposes * remove check to de-apply outputs during segment application * return removal of spent outputs during pibd * remove unneeded status * remove uneeded change to rewind function * documentation updates + todo fixes (#3703) * add pibd abort timeout case (#3704) * [PIBD_IMPL] BitmapAccumulator Serialization Fix (#3705) * fix for writing / calculating incorrect length for negative indices * update capabilities with new version of PIBD hist * remove incorrect comment * fix capabilities flag, trace output * test fix * Merge DNSSeed scope changes into pibd impl branch (#3708) * update Cargo.lock for next release * visibility scope tweaks to aid seed test utilities (#3707) * move all PIBD-related constants into pibd_params modules (#3711) * remove potential double read lock during compaction
This commit is contained in:
+43
-2
@@ -50,6 +50,24 @@ impl TUIStatusView {
|
||||
};
|
||||
Cow::Owned(format!("Sync step 1/7: Downloading headers: {}%", percent))
|
||||
}
|
||||
SyncStatus::TxHashsetPibd {
|
||||
aborted: _,
|
||||
errored: _,
|
||||
completed_leaves,
|
||||
leaves_required,
|
||||
completed_to_height: _,
|
||||
required_height: _,
|
||||
} => {
|
||||
let percent = if completed_leaves == 0 {
|
||||
0
|
||||
} else {
|
||||
completed_leaves * 100 / leaves_required
|
||||
};
|
||||
Cow::Owned(format!(
|
||||
"Sync step 2/7: Downloading Tx state (PIBD) - {} / {} entries - {}%",
|
||||
completed_leaves, leaves_required, percent
|
||||
))
|
||||
}
|
||||
SyncStatus::TxHashsetDownload(stat) => {
|
||||
if stat.total_size > 0 {
|
||||
let percent = stat.downloaded_size * 100 / stat.total_size;
|
||||
@@ -72,8 +90,31 @@ impl TUIStatusView {
|
||||
))
|
||||
}
|
||||
}
|
||||
SyncStatus::TxHashsetSetup => {
|
||||
Cow::Borrowed("Sync step 3/7: Preparing chain state for validation")
|
||||
SyncStatus::TxHashsetSetup {
|
||||
headers,
|
||||
headers_total,
|
||||
kernel_pos,
|
||||
kernel_pos_total,
|
||||
} => {
|
||||
if headers.is_some() && headers_total.is_some() {
|
||||
let h = headers.unwrap();
|
||||
let ht = headers_total.unwrap();
|
||||
let percent = h * 100 / ht;
|
||||
Cow::Owned(format!(
|
||||
"Sync step 3/7: Preparing for validation (kernel history) - {}/{} - {}%",
|
||||
h, ht, percent
|
||||
))
|
||||
} else if kernel_pos.is_some() && kernel_pos_total.is_some() {
|
||||
let k = kernel_pos.unwrap();
|
||||
let kt = kernel_pos_total.unwrap();
|
||||
let percent = k * 100 / kt;
|
||||
Cow::Owned(format!(
|
||||
"Sync step 3/7: Preparing for validation (kernel position) - {}/{} - {}%",
|
||||
k, kt, percent
|
||||
))
|
||||
} else {
|
||||
Cow::Borrowed("Sync step 3/7: Preparing chain state for validation")
|
||||
}
|
||||
}
|
||||
SyncStatus::TxHashsetRangeProofsValidation {
|
||||
rproofs,
|
||||
|
||||
Reference in New Issue
Block a user