mirror of
https://github.com/scylladb/scylladb.git
synced 2026-04-26 03:20:37 +00:00
There are several sstring-returning methods on class sstable that return paths to files. Mostly these are used to print them into logs, sometimes are used to be put into exception messages. And there are places that use these strings as file names. Since now sstables can also be stored on S3, generic code shouldn't consider those strings as on disk file names. Other than that, even when the methods are used to put component names into logs, in many cases these log messages come with debug or trace level, so generated strings are immediately dropped on the floor, but generating it is not extremely cheap. Code would benefit from using lazily-printed names. This change introduces the component_name struct that wraps sstable reference and component ID (which is a numerical enum of several items). When printed, the component_name formatter calls the aforementioned filename generation, thus implementing lazy printing. And since there's no automatic conversion of component_name-s into strings, all the code that treats them as file paths, becomes explicit. refs: #14122 (previous ugly attempt to achieve the same goal) Closes scylladb/scylladb#23194 * github.com:scylladb/scylladb: sstable: Remove unused malformed_sstable_exctpion(string filename) sstables: Make filename() return component_name sstables: Make file_writer keep component_name on board sstables: Make get_filename() return component_name sstables: Make toc_filename() return component_name sstables: Make sstable::index_filename() return component_name sstables: Introduce struct component_name sstables: Remove unused sstable::component_filenames() method sstables: Do not print component filenames on load-and-stream wrap-up sstables: Explicitly format prefix in S3 object name making sstables: Don't include directory name in exception sstables: Use fmt::format instead of string concatenation sstables: Rename filename($component) calls to ${component}_filename() sstables: Rename local filename variable to component_name