Iterator changes when skipping internal keys #3524
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
User-Visible changes:
Seek,SeekForPrev,SeekToFirst,SeekToLast) as Incomplete when RocksDB encounters many internal keys to get to a valid user-visible key, on settingReadOptions.max_skippable_internal_keys. Fail onlyNextandPrevoperations. This change will enable users to re-seek on a failed Next/Prev op.rocksdb.iterator.internal-keyto return the internal key at which the iterator stopped.Non-user visible changes:
Operationin DBIter to keep track of what is the current operation that is being performed. This helps in making decisions based on the operation in the functions down the call stack. For example:TooManyInternalKeysmethod is called in both Seek and Next call-stack. We can make better decision in these functions if we know what top-level API calls it.Test Plan:
New tests added.