@@ -429,7 +429,7 @@ bool DBIter::FindNextUserEntryInternal(bool skipping, bool prefix_check) {
429
429
// greater than that,
430
430
// - none of the above : saved_key_ can contain anything, it doesn't matter.
431
431
uint64_t num_skipped = 0 ;
432
-
432
+ bool reseek_done = false ;
433
433
do {
434
434
if (!ParseKey (&ikey_)) {
435
435
return false ;
@@ -457,6 +457,7 @@ bool DBIter::FindNextUserEntryInternal(bool skipping, bool prefix_check) {
457
457
PERF_COUNTER_ADD (internal_key_skipped_count, 1 );
458
458
} else {
459
459
num_skipped = 0 ;
460
+ reseek_done = false ;
460
461
switch (ikey_.type ) {
461
462
case kTypeDeletion :
462
463
case kTypeSingleDeletion :
@@ -500,6 +501,7 @@ bool DBIter::FindNextUserEntryInternal(bool skipping, bool prefix_check) {
500
501
// they are hidden by this deletion.
501
502
skipping = true ;
502
503
num_skipped = 0 ;
504
+ reseek_done = false ;
503
505
PERF_COUNTER_ADD (internal_delete_skipped_count, 1 );
504
506
} else {
505
507
value_ = GetValue (ikey_, kTypeValueIndex );
@@ -517,6 +519,7 @@ bool DBIter::FindNextUserEntryInternal(bool skipping, bool prefix_check) {
517
519
// they are hidden by this deletion.
518
520
skipping = true ;
519
521
num_skipped = 0 ;
522
+ reseek_done = false ;
520
523
PERF_COUNTER_ADD (internal_delete_skipped_count, 1 );
521
524
} else {
522
525
// By now, we are sure the current ikey is going to yield a
@@ -545,13 +548,15 @@ bool DBIter::FindNextUserEntryInternal(bool skipping, bool prefix_check) {
545
548
saved_key_.SetUserKey (ikey_.user_key );
546
549
skipping = false ;
547
550
num_skipped = 0 ;
551
+ reseek_done = false ;
548
552
}
549
553
}
550
554
551
555
// If we have sequentially iterated via numerous equal keys, then it's
552
556
// better to seek so that we can avoid too many key comparisons.
553
- if (num_skipped > max_skip_ && CanReseekToSkip () ) {
557
+ if (num_skipped > max_skip_ && !reseek_done ) {
554
558
num_skipped = 0 ;
559
+ reseek_done = true ;
555
560
std::string last_key;
556
561
if (skipping) {
557
562
// We're looking for the next user-key but all we see are the same
0 commit comments