Revision 58b12dfe37784ce1bd67a03643147ab94f590451 authored by Reid Horuff on 06 March 2017, 23:04:36 UTC, committed by Facebook Github Bot on 06 March 2017, 23:09:11 UTC
Summary:
Relating to #1903:

In MaybeFlushColumnFamilies() we want to modify the 'getting_flushed' flag before releasing the db mutex when SwitchMemtable() is called.

The following 2 actions need to be atomic in MaybeFlushColumnFamilies()
- getting_flushed is false on oldest log
- we determine that all CFs can be flushed to successfully release oldest log
- we set getting_flushed = true on the oldest log.
-------
- getting_flushed is false on oldest log
- we determine that all CFs can NOT be flushed to successfully release oldest log
- we set unable_to_flush_oldest_log_ = true on the oldest log.

#### In the 2pc case:

T1 enters function but is unable to flush all CFs to release log
T1 sets unable_to_flush_oldest_log_ = true
T1 begins flushing all CFs possible

T2 enters function but is unable to flush all CFs to release log
T2 sees unable_to_flush_oldes_log_ has been set so exits

T3 enters function and will be able to flush all CFs to release oldest log
T3 sets getting_flushed = true on oldes
Closes https://github.com/facebook/rocksdb/pull/1909

Differential Revision: D4646235

Pulled By: reidHoruff

fbshipit-source-id: c8d0447
1 parent f8a4ea0
History
File Mode Size
dump
rdb
CMakeLists.txt -rw-r--r-- 544 bytes
Dockerfile -rw-r--r-- 81 bytes
auto_sanity_test.sh -rwxr-xr-x 2.6 KB
benchmark.sh -rwxr-xr-x 16.5 KB
benchmark_leveldb.sh -rwxr-xr-x 5.1 KB
check_format_compatible.sh -rwxr-xr-x 3.8 KB
db_bench.cc -rw-r--r-- 851 bytes
db_bench_tool.cc -rw-r--r-- 175.7 KB
db_bench_tool_test.cc -rw-r--r-- 9.7 KB
db_crashtest.py -rw-r--r-- 13.2 KB
db_repl_stress.cc -rw-r--r-- 4.5 KB
db_sanity_test.cc -rw-r--r-- 8.4 KB
db_stress.cc -rw-r--r-- 84.1 KB
dbench_monitor -rwxr-xr-x 2.6 KB
generate_random_db.sh -rwxr-xr-x 726 bytes
ldb.cc -rw-r--r-- 602 bytes
ldb_cmd.cc -rw-r--r-- 91.8 KB
ldb_cmd_impl.h -rw-r--r-- 13.6 KB
ldb_cmd_test.cc -rw-r--r-- 1.8 KB
ldb_test.py -rw-r--r-- 23.6 KB
ldb_tool.cc -rw-r--r-- 4.3 KB
pflag -rwxr-xr-x 4.0 KB
reduce_levels_test.cc -rw-r--r-- 5.2 KB
regression_test.sh -rwxr-xr-x 12.7 KB
rocksdb_dump_test.sh -rwxr-xr-x 325 bytes
run_flash_bench.sh -rwxr-xr-x 13.4 KB
run_leveldb.sh -rwxr-xr-x 6.2 KB
sample-dump.dmp -rw-r--r-- 100 bytes
sst_dump.cc -rw-r--r-- 611 bytes
sst_dump_test.cc -rw-r--r-- 6.4 KB
sst_dump_tool.cc -rw-r--r-- 21.4 KB
sst_dump_tool_imp.h -rw-r--r-- 2.6 KB
verify_random_db.sh -rwxr-xr-x 710 bytes
write_stress.cc -rw-r--r-- 10.8 KB
write_stress_runner.py -rw-r--r-- 2.2 KB

back to top