rocksdb/port
Venkatesh Radhakrishnan 030215bf01 Running manual compactions in parallel with other automatic or manual compactions in restricted cases
Summary:
This diff provides a framework for doing manual
compactions in parallel with other compactions. We now have a deque of manual compactions. We also pass manual compactions as an argument from RunManualCompactions down to
BackgroundCompactions, so that RunManualCompactions can be reentrant.
Parallelism is controlled by the two routines
ConflictingManualCompaction to allow/disallow new parallel/manual
compactions based on already existing ManualCompactions. In this diff, by default manual compactions still have to run exclusive of other compactions. However, by setting the compaction option, exclusive_manual_compaction to false, it is possible to run other compactions in parallel with a manual compaction. However, we are still restricted to one manual compaction per column family at a time. All of these restrictions will be relaxed in future diffs.
I will be adding more tests later.

Test Plan: Rocksdb regression + new tests + valgrind

Reviewers: igor, anthony, IslamAbdelRahman, kradhakrishnan, yhchiang, sdong

Reviewed By: sdong

Subscribers: yoshinorim, dhruba, leveldb

Differential Revision: https://reviews.facebook.net/D47973
2015-12-14 11:20:34 -08:00
..
win Running manual compactions in parallel with other automatic or manual compactions in restricted cases 2015-12-14 11:20:34 -08:00
dirent.h "make format" against last 10 commits 2015-07-13 13:50:18 -07:00
likely.h cache SuperVersion in thread local storage to avoid mutex lock 2014-02-27 11:38:55 -08:00
port_example.h Deprecate AtomicPointer 2014-10-27 14:50:21 -07:00
port_posix.cc Set max_open_files based on ulimit 2015-09-10 10:49:28 -07:00
port_posix.h fix typos in comments 2015-12-11 01:54:48 +09:00
port.h Lint everything 2015-11-16 12:56:21 -08:00
README reverting disastrous MOE commit, returning to r21 2011-04-19 23:11:15 +00:00
stack_trace.cc Build for CYGWIN 2015-04-23 21:33:44 -07:00
stack_trace.h Print out stack trace in mac, too 2014-04-23 09:11:35 -04:00
sys_time.h "make format" against last 10 commits 2015-07-13 13:50:18 -07:00
util_logger.h "make format" against last 10 commits 2015-07-13 13:50:18 -07:00

This directory contains interfaces and implementations that isolate the
rest of the package from platform details.

Code in the rest of the package includes "port.h" from this directory.
"port.h" in turn includes a platform specific "port_<platform>.h" file
that provides the platform specific implementation.

See port_posix.h for an example of what must be provided in a platform
specific header file.