rocksdb/file
Yanqin Jin dd203ed604 Disallow a combination of options (#9348)
Summary:
Disallow `immutable_db_opts.use_direct_io_for_flush_and_compaction == true` and
`mutable_db_opts.writable_file_max_buffer_size == 0`, since it causes `WritableFileWriter::Append()`
to loop forever and does not make much sense in direct IO.

This combination of options itself does not make much sense: asking RocksDB to do direct IO but not allowing
RocksDB to allocate a buffer. We should detect this false combination and warn user early, no matter whether
the application is running on a platform that supports direct IO or not. In the case of platform **not** supporting
direct IO, it's ok if the user learns about this and then finds that direct IO is not supported.

One tricky thing: the constructor of `WritableFileWriter` is being used in our unit tests, and it's impossible
to return status code from constructor. Since we do not throw, I put an assertion for now. Fortunately,
the constructor is not exposed to external applications.

Closing https://github.com/facebook/rocksdb/issues/7109

Pull Request resolved: https://github.com/facebook/rocksdb/pull/9348

Test Plan: make check

Reviewed By: ajkr

Differential Revision: D33371924

Pulled By: riversand963

fbshipit-source-id: 2a3701ab541cee23bffda8a36cdf37b2d235edfa
2022-01-27 19:30:24 -08:00
..
delete_scheduler.cc Skip directory fsync for filesystem btrfs (#8903) 2021-11-03 12:21:27 -07:00
delete_scheduler.h
delete_scheduler_test.cc
file_prefetch_buffer.cc Fix bug in rocksdb internal automatic prefetching (#9234) 2021-11-30 22:53:10 -08:00
file_prefetch_buffer.h Fix bug in rocksdb internal automatic prefetching (#9234) 2021-11-30 22:53:10 -08:00
file_util.cc Support readahead during compaction for blob files (#9187) 2021-11-19 17:53:47 -08:00
file_util.h
filename.cc Skip directory fsync for filesystem btrfs (#8903) 2021-11-03 12:21:27 -07:00
filename.h Add (Live)FileStorageInfo API (#8968) 2021-10-16 10:04:32 -07:00
line_file_reader.cc
line_file_reader.h
prefetch_test.cc Fix bug in rocksdb internal automatic prefetching (#9234) 2021-11-30 22:53:10 -08:00
random_access_file_reader.cc Add listener API that notifies on IOError (#9177) 2021-11-18 17:11:19 -08:00
random_access_file_reader.h Add listener API that notifies on IOError (#9177) 2021-11-18 17:11:19 -08:00
random_access_file_reader_test.cc
read_write_util.cc
read_write_util.h
readahead_file_info.h Reuse internal auto readhead_size at each Level (expect L0) for Iterations (#9056) 2021-11-10 16:20:04 -08:00
readahead_raf.cc
readahead_raf.h
sequence_file_reader.cc Add file operation callbacks to SequentialFileReader (#8982) 2021-10-05 10:51:59 -07:00
sequence_file_reader.h Add listener API that notifies on IOError (#9177) 2021-11-18 17:11:19 -08:00
sst_file_manager_impl.cc Fix race condition in SstFileManagerImpl error recovery code (#9435) 2022-01-25 23:22:58 -08:00
sst_file_manager_impl.h
writable_file_writer.cc Disallow a combination of options (#9348) 2022-01-27 19:30:24 -08:00
writable_file_writer.h Disallow a combination of options (#9348) 2022-01-27 19:30:24 -08:00