diff --git a/HISTORY.md b/HISTORY.md index f40733928..8f60d2954 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -26,6 +26,7 @@ ### Public API Change * Deprecate `BlockBasedTableOptions::pin_l0_filter_and_index_blocks_in_cache` and `BlockBasedTableOptions::pin_top_level_index_and_filter`. These options still take effect until users migrate to the replacement APIs in `BlockBasedTableOptions::metadata_cache_options`. Migration guidance can be found in the API comments on the deprecated options. * Add new API `DB::VerifyFileChecksums` to verify SST file checksum with corresponding entries in the MANIFEST if present. Current implementation requires scanning and recomputing file checksums. +* Added a new option `track_and_verify_wals_in_manifest`. If `true`, the log numbers and sizes of the synced WALs are tracked in MANIFEST, then during DB recovery, if a synced WAL is missing from disk, or the WAL's size does not match the recorded size in MANIFEST, an error will be reported and the recovery will be aborted. Note that this option does not work with secondary instance. ### Behavior Changes * The dictionary compression settings specified in `ColumnFamilyOptions::compression_opts` now additionally affect files generated by flush and compaction to non-bottommost level. Previously those settings at most affected files generated by compaction to bottommost level, depending on whether `ColumnFamilyOptions::bottommost_compression_opts` overrode them. Users who relied on dictionary compression settings in `ColumnFamilyOptions::compression_opts` affecting only the bottommost level can keep the behavior by moving their dictionary settings to `ColumnFamilyOptions::bottommost_compression_opts` and setting its `enabled` flag. diff --git a/include/rocksdb/options.h b/include/rocksdb/options.h index c62ecb09c..2bc8aa626 100644 --- a/include/rocksdb/options.h +++ b/include/rocksdb/options.h @@ -393,18 +393,14 @@ struct DBOptions { // Default: true bool paranoid_checks = true; - // If true, track WALs in MANIFEST and verify them on recovery. + // If true, the log numbers and sizes of the synced WALs are tracked + // in MANIFEST, then during DB recovery, if a synced WAL is missing + // from disk, or the WAL's size does not match the recorded size in + // MANIFEST, an error will be reported and the recovery will be aborted. // - // If a WAL is tracked in MANIFEST but is missing from disk on recovery, - // or the size of the tracked WAL is larger than the WAL's on-disk size, - // an error is reported and recovery is aborted. - // - // If a WAL is not tracked in MANIFEST, then no verification will happen - // during recovery. + // Note that this option does not work with secondary instance. // // Default: false - // FIXME(cheng): This option is part of a work in progress and does not yet - // work bool track_and_verify_wals_in_manifest = false; // Use the specified object to interact with the environment,