Skip to content

Commit 2fa9bf2

Browse files
Layamonmm304321141
authored andcommitted
[reseek bugfix] add reseekdone flag
1 parent ba4aaa0 commit 2fa9bf2

File tree

2 files changed

+7
-3
lines changed

2 files changed

+7
-3
lines changed

db/db_iter.cc

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -429,7 +429,7 @@ bool DBIter::FindNextUserEntryInternal(bool skipping, bool prefix_check) {
429429
// greater than that,
430430
// - none of the above : saved_key_ can contain anything, it doesn't matter.
431431
uint64_t num_skipped = 0;
432-
432+
bool reseek_done = false;
433433
do {
434434
if (!ParseKey(&ikey_)) {
435435
return false;
@@ -457,6 +457,7 @@ bool DBIter::FindNextUserEntryInternal(bool skipping, bool prefix_check) {
457457
PERF_COUNTER_ADD(internal_key_skipped_count, 1);
458458
} else {
459459
num_skipped = 0;
460+
reseek_done = false;
460461
switch (ikey_.type) {
461462
case kTypeDeletion:
462463
case kTypeSingleDeletion:
@@ -500,6 +501,7 @@ bool DBIter::FindNextUserEntryInternal(bool skipping, bool prefix_check) {
500501
// they are hidden by this deletion.
501502
skipping = true;
502503
num_skipped = 0;
504+
reseek_done = false;
503505
PERF_COUNTER_ADD(internal_delete_skipped_count, 1);
504506
} else {
505507
value_ = GetValue(ikey_, kTypeValueIndex);
@@ -517,6 +519,7 @@ bool DBIter::FindNextUserEntryInternal(bool skipping, bool prefix_check) {
517519
// they are hidden by this deletion.
518520
skipping = true;
519521
num_skipped = 0;
522+
reseek_done = false;
520523
PERF_COUNTER_ADD(internal_delete_skipped_count, 1);
521524
} else {
522525
// 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) {
545548
saved_key_.SetUserKey(ikey_.user_key);
546549
skipping = false;
547550
num_skipped = 0;
551+
reseek_done = false;
548552
}
549553
}
550554

551555
// If we have sequentially iterated via numerous equal keys, then it's
552556
// 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) {
554558
num_skipped = 0;
559+
reseek_done = true;
555560
std::string last_key;
556561
if (skipping) {
557562
// We're looking for the next user-key but all we see are the same

utilities/transactions/write_prepared_txn.cc

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,6 @@ Status WritePreparedTxn::PrepareInternal() {
102102
assert(!s.ok() || seq_used != kMaxSequenceNumber);
103103
auto prepare_seq = seq_used;
104104
SetId(prepare_seq);
105-
TEST_SYNC_POINT_CALLBACK("WritePreparedTxn::PrepareInternal::End", nullptr);
106105
return s;
107106
}
108107

0 commit comments

Comments
 (0)