Find a file
Andrew Kryczka e5e545a021 Reunite checkpoint and backup core logic
Summary:
These code paths forked when checkpoint was introduced by copy/pasting the core backup logic. Over time they diverged and bug fixes were sometimes applied to one but not the other (like fix to include all relevant WALs for 2PC), or it required extra effort to fix both (like fix to forge CURRENT file). This diff reunites the code paths by extracting the core logic into a function, CreateCustomCheckpoint(), that is customizable via callbacks to implement both checkpoint and backup.

Related changes:

- flush_before_backup is now forcibly enabled when 2PC is enabled
- Extracted CheckpointImpl class definition into a header file. This is so the function, CreateCustomCheckpoint(), can be called by internal rocksdb code but not exposed to users.
- Implemented more functions in DummyDB/DummyLogFile (in backupable_db_test.cc) that are used by CreateCustomCheckpoint().
Closes https://github.com/facebook/rocksdb/pull/1932

Differential Revision: D4622986

Pulled By: ajkr

fbshipit-source-id: 157723884236ee3999a682673b64f7457a7a0d87
2017-04-24 15:06:46 -07:00
arcanist_util
buckifier
build_tools AIX and Solaris Sparc Support 2017-04-21 20:48:04 -07:00
cache Add erase option to release cache 2017-04-24 11:28:36 -07:00
cmake/modules
coverage
db call GetRootDB() before cast to DBImpl* in CancelAllBackgroundWork 2017-04-24 13:47:17 -07:00
docs
env AIX and Solaris Sparc Support 2017-04-21 20:48:04 -07:00
examples
hdfs
include/rocksdb Reunite checkpoint and backup core logic 2017-04-24 15:06:46 -07:00
java AIX and Solaris Sparc Support 2017-04-21 20:48:04 -07:00
memtable AIX and Solaris Sparc Support 2017-04-21 20:48:04 -07:00
monitoring
options AIX and Solaris Sparc Support 2017-04-21 20:48:04 -07:00
port AIX and Solaris Sparc Support 2017-04-21 20:48:04 -07:00
table AIX and Solaris Sparc Support 2017-04-21 20:48:04 -07:00
third-party
tools AIX and Solaris Sparc Support 2017-04-21 20:48:04 -07:00
util AIX and Solaris Sparc Support 2017-04-21 20:48:04 -07:00
utilities Reunite checkpoint and backup core logic 2017-04-24 15:06:46 -07:00
.clang-format
.deprecated_arcconfig
.gitignore
.travis.yml
appveyor.yml
AUTHORS
CMakeLists.txt Reunite checkpoint and backup core logic 2017-04-24 15:06:46 -07:00
CONTRIBUTING.md
DEFAULT_OPTIONS_HISTORY.md
DUMP_FORMAT.md
HISTORY.md
INSTALL.md AIX and Solaris Sparc Support 2017-04-21 20:48:04 -07:00
LANGUAGE-BINDINGS.md
LICENSE
Makefile AIX and Solaris Sparc Support 2017-04-21 20:48:04 -07:00
PATENTS
README.md
ROCKSDB_LITE.md
src.mk Reunite checkpoint and backup core logic 2017-04-24 15:06:46 -07:00
TARGETS Reunite checkpoint and backup core logic 2017-04-24 15:06:46 -07:00
thirdparty.inc
USERS.md
Vagrantfile
WINDOWS_PORT.md

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

Build Status 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/