Skip to content

Commit

Permalink
Deprecate --rocksdb-shred-compaction fifo (solana-labs#1882)
Browse files Browse the repository at this point in the history
The fifo compaction option was originally added to mitigate write
stalls that were occurring with level compaction. Since fifo was
introduced, the level compaction implementation has been optimized
to reduce I/O amplification. With these improvements, level and fifo
are comparable and sticking with level only simplifies things.

For now, only a deprecation warning will be printed. In the next
release branch (2.1.0), specifying fifo will be an error
  • Loading branch information
steviez authored Jun 28, 2024
1 parent c3fadac commit e15e235
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 10 deletions.
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,8 @@ Release channels have their own copy of this changelog:
* Partitions are recalculated on boot from snapshot (#1159)
* `epoch_rewards_status` removed from snapshot (#1274)
* Added `unified-scheduler` option for `--block-verification-method` (#1668)
* Deprecate the `fifo` option for `--rocksdb-shred-compaction` (#1882)
* `fifo` will remain supported in v2.0 with plans to fully remove in v2.1

## [1.18.0]
* Changes
Expand Down
30 changes: 20 additions & 10 deletions validator/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1785,16 +1785,26 @@ pub fn main() {
None => ShredStorageType::default(),
Some(shred_compaction_string) => match shred_compaction_string {
"level" => ShredStorageType::RocksLevel,
"fifo" => match matches.value_of("rocksdb_fifo_shred_storage_size") {
None => ShredStorageType::rocks_fifo(default_fifo_shred_storage_size(
&validator_config,
)),
Some(_) => ShredStorageType::rocks_fifo(Some(value_t_or_exit!(
matches,
"rocksdb_fifo_shred_storage_size",
u64
))),
},
"fifo" => {
warn!(
"The value \"fifo\" for --rocksdb-shred-compaction has been deprecated. \
Use of \"fifo\" will still work for now, but is planned for full removal \
in v2.1. To update, use \"level\" for --rocksdb-shred-compaction, or \
remove the --rocksdb-shred-compaction argument altogether. Note that the \
entire \"rocksdb_fifo\" subdirectory within the ledger directory will \
need to be manually removed once the validator is running with \"level\"."
);
match matches.value_of("rocksdb_fifo_shred_storage_size") {
None => ShredStorageType::rocks_fifo(default_fifo_shred_storage_size(
&validator_config,
)),
Some(_) => ShredStorageType::rocks_fifo(Some(value_t_or_exit!(
matches,
"rocksdb_fifo_shred_storage_size",
u64
))),
}
}
_ => panic!("Unrecognized rocksdb-shred-compaction: {shred_compaction_string}"),
},
},
Expand Down

0 comments on commit e15e235

Please sign in to comment.