This helps to distinguish between Mainnet and Testnet notifications sent
into the same notification channel. Usage example:
solana-watchtower --name-suffix " mainnet" ...
solana-watchtower --name-suffix " testnet" ...
#### Problem
Previously before #26651, our LedgerCleanupService needs RocksDB background
compactions to reclaim ledger disk space via our custom CompactionFilter.
However, since RocksDB's compaction isn't smart enough to know which file to pick,
we rely on the 1-day compaction period so that each file will be forced to be compacted
once a day so that we can reclaim ledger disk space in time. The downside of this is
each ledger file will be rewritten once per day.
#### Summary of Changes
As #26651 makes LedgerCleanupService actively delete those files whose entire slot-range
is older than both --limit-ledger-size and the current root, we can remove the 1-day compaction
period and get rid of the daily ledger file rewrite.
The results on mainnet-beta shows that this PR reduces ~20% write-bytes-per-second
and reduces ~50% read-bytes-per-second on ledger disk.
* trigger docs build when .github/workflows/docs.yml changed
* echo tag info
* echo channel info
* echo any changes info
* bump tj-actions/changed-files@v29.0.7
* fix variable name
* fix broken link
* Add test to verify output when deserializing/reserializing empty fields
* Add test to verify serialization from UiTransactionStatusMeta constructors
* Add OptionSerializer
* Use OptionSerializer for inner_instructions
* Use OptionSerializer for loaded_addresses
* Remove Default variant, use into instead
* Add as_ref implementation
* Use OptionSerializer for log_messages and rewards
* Use OptionSerializer for token_balances
* Use OptionSerializer for return_data
* Use OptionSerializer for compute_units_consumed
Separate storage for voting and transaction threads:
- Voting threads utilize a shared reference in order to dedup extraneous
votes
- Transactions have thread local storage like before
* Add structure to collect and coalesce vote packets
Will be used in banking stage to throw out extraneous vote packets
before processing
* pr comments
* Update inner lock to arc to improve performance
#### Problem
The ledger-tool copy command currently assumes target_db uses the same
shred storage type as the source ledger.
#### Summary of Changes
This PR enables ledger-tool copy command to infer the target_db shred storage
type based on whether rocksdb or rocksdb_fifo exists under the target_db directory
(same way as how ledger-tool infers the shred storage type for the main db.)
If the ledger-tool is not able to infer the shred storage type of the target_db, then
the default level compaction will be used.
#### Problem
Blockstore operations such as get_slots_since() issues multiple rocksdb::get()
at once which is not optimal for performance.
#### Summary of Changes
This PR adds LedgerColumn::multi_get() based on rocksdb::batched_multi_get(),
the optimized version of multi_get() where get requests are processed in batch
to minimize read I/O.
* move if let destructuring out of for loop
* remove trailing whitespace
* Update programs/vote/src/vote_state/mod.rs
Co-authored-by: Justin Starry <justin.m.starry@gmail.com>