protection from adding empty traces && assertion in traces db (#1994)

* protection from readding empty traces && assertion in traces db

* simplified assert
This commit is contained in:
Marek Kotewicz 2016-08-24 18:35:53 +02:00 committed by Gav Wood
parent d631162440
commit f6b8dd0e78

View File

@ -262,6 +262,13 @@ impl<T> TraceDatabase for TraceDB<T> where T: DatabaseExtras {
/// Traces of import request's enacted blocks are expected to be already in database /// Traces of import request's enacted blocks are expected to be already in database
/// or to be the currently inserted trace. /// or to be the currently inserted trace.
fn import(&self, batch: &DBTransaction, request: ImportRequest) { fn import(&self, batch: &DBTransaction, request: ImportRequest) {
// valid (canon): retracted 0, enacted 1 => false, true,
// valid (branch): retracted 0, enacted 0 => false, false,
// valid (bbcc): retracted 1, enacted 1 => true, true,
// invalid: retracted 1, enacted 0 => true, false,
let ret = request.retracted != 0;
let ena = !request.enacted.is_empty();
assert!(!(ret && !ena));
// fast return if tracing is disabled // fast return if tracing is disabled
if !self.tracing_enabled() { if !self.tracing_enabled() {
return; return;
@ -278,7 +285,7 @@ impl<T> TraceDatabase for TraceDB<T> where T: DatabaseExtras {
} }
// now let's rebuild the blooms // now let's rebuild the blooms
{ if !request.enacted.is_empty() {
let range_start = request.block_number as Number + 1 - request.enacted.len(); let range_start = request.block_number as Number + 1 - request.enacted.len();
let range_end = range_start + request.retracted; let range_end = range_start + request.retracted;
let replaced_range = range_start..range_end; let replaced_range = range_start..range_end;