Find a file
Zhongyi Xie 3a18bb3e15 BaseDeltaIterator: always check valid() before accessing key() (#4702)
Summary:
Current implementation of `current_over_upper_bound_` fails to take into consideration that keys might be invalid in either base iterator or delta iterator. Calling key() in such scenario will lead to assertion failure and runtime errors.
This PR addresses the bug by adding check for valid keys before calling `IsOverUpperBound()`, also added test coverage for iterate_upper_bound usage in BaseDeltaIterator
Also recommit https://github.com/facebook/rocksdb/pull/4656 (It was reverted earlier due to bugs)
Pull Request resolved: https://github.com/facebook/rocksdb/pull/4702

Differential Revision: D13146643

Pulled By: miasantreble

fbshipit-source-id: 6d136929da12d0f2e2a5cea474a8038ec5cdf1d0
2018-11-30 15:35:13 -08:00
buckifier
build_tools
cache
cmake
coverage
db BaseDeltaIterator: always check valid() before accessing key() (#4702) 2018-11-30 15:35:13 -08:00
docs
env
examples
hdfs
include/rocksdb BaseDeltaIterator: always check valid() before accessing key() (#4702) 2018-11-30 15:35:13 -08:00
java BaseDeltaIterator: always check valid() before accessing key() (#4702) 2018-11-30 15:35:13 -08:00
memtable
monitoring
options
port
table Fix failure of sst_file_reader_test in LITE mode regression test (#4725) 2018-11-29 10:51:41 -08:00
third-party
tools Move FIFOCompactionPicker to a separate file (#4724) 2018-11-29 16:04:52 -08:00
util fix unused param "options" error in jemalloc_nodump_allocator.cc (#4738) 2018-11-30 12:08:55 -08:00
utilities BaseDeltaIterator: always check valid() before accessing key() (#4702) 2018-11-30 15:35:13 -08:00
.clang-format
.gitignore
.lgtm.yml
.travis.yml
appveyor.yml
AUTHORS
CMakeLists.txt Move FIFOCompactionPicker to a separate file (#4724) 2018-11-29 16:04:52 -08:00
CODE_OF_CONDUCT.md
CONTRIBUTING.md
COPYING
DEFAULT_OPTIONS_HISTORY.md
DUMP_FORMAT.md
HISTORY.md Make NewBloomFilterPolicy() use full filter by default (#4735) 2018-11-30 13:13:27 -08:00
INSTALL.md
issue_template.md
LANGUAGE-BINDINGS.md
LICENSE.Apache
LICENSE.leveldb
Makefile Add SstFileReader to read sst files (#4717) 2018-11-27 13:02:23 -08:00
README.md
ROCKSDB_LITE.md
src.mk Move FIFOCompactionPicker to a separate file (#4724) 2018-11-29 16:04:52 -08:00
TARGETS Move FIFOCompactionPicker to a separate file (#4724) 2018-11-29 16:04:52 -08:00
thirdparty.inc
USERS.md
Vagrantfile
WINDOWS_PORT.md

RocksDB: A Persistent Key-Value Store for Flash and RAM Storage

Linux/Mac Build Status Windows Build status PPC64le Build Status

RocksDB is developed and maintained by Facebook Database Engineering Team. It is built on earlier work on LevelDB by Sanjay Ghemawat (sanjay@google.com) and Jeff Dean (jeff@google.com)

This code is a library that forms the core building block for a fast key value server, especially suited for storing data on flash drives. It has a Log-Structured-Merge-Database (LSM) design with flexible tradeoffs between Write-Amplification-Factor (WAF), Read-Amplification-Factor (RAF) and Space-Amplification-Factor (SAF). It has multi-threaded compactions, making it specially suitable for storing multiple terabytes of data in a single database.

Start with example usage here: https://github.com/facebook/rocksdb/tree/master/examples

See the github wiki for more explanation.

The public interface is in include/. Callers should not include or rely on the details of any other header files in this package. Those internal APIs may be changed without warning.

Design discussions are conducted in https://www.facebook.com/groups/rocksdb.dev/

License

RocksDB is dual-licensed under both the GPLv2 (found in the COPYING file in the root directory) and Apache 2.0 License (found in the LICENSE.Apache file in the root directory). You may select, at your option, one of the above-listed licenses.