Relaxed assert in forward iterator

Summary:
It looks like in some cases an assert in SeekInternal failed when computing the
hints for the next level because user_key was the same as the largest key and
not strictly smaller. Relaxing the assert to expect smaller or equal keys.

Test Plan: make clean all check

Reviewers: sdong

Reviewed By: sdong

Subscribers: dhruba, leveldb

Differential Revision: https://reviews.facebook.net/D46443
main
Andres Notzli 9 years ago
parent 5e94f68f35
commit e17e92ea19
  1. 2
      db/forward_iterator.cc

@ -335,7 +335,7 @@ void ForwardIterator::SeekInternal(const Slice& internal_key,
int cmp_smallest = user_comparator_->Compare( int cmp_smallest = user_comparator_->Compare(
user_key, level_files[f_idx]->smallest.user_key()); user_key, level_files[f_idx]->smallest.user_key());
assert(user_comparator_->Compare( assert(user_comparator_->Compare(
user_key, level_files[f_idx]->largest.user_key()) < 0); user_key, level_files[f_idx]->largest.user_key()) <= 0);
indexer.GetNextLevelIndex(level, f_idx, cmp_smallest, -1, indexer.GetNextLevelIndex(level, f_idx, cmp_smallest, -1,
&search_left_bound, &search_right_bound); &search_left_bound, &search_right_bound);
} else { } else {

Loading…
Cancel
Save