36#ifndef log0files_dict_h
37#define log0files_dict_h
190 lsn_t end_lsn, F functor) {
192 ut_a(start_lsn <= end_lsn);
193 if (start_lsn == end_lsn) {
197 auto begin = files.
find(start_lsn);
199 ut_a(begin->m_start_lsn <= start_lsn);
201 auto end = files.
find(end_lsn - 1);
203 ut_a(end_lsn <= end->m_end_lsn);
206 ut_a(
end == files.
end() || end_lsn <= end->m_start_lsn);
217 lsn_t &lsn_capacity);
Definition: log0files_dict.h:62
bool operator==(const Const_iterator &rhs) const
Definition: log0files_dict.cc:222
Const_iterator & operator++()
Definition: log0files_dict.cc:200
std::ptrdiff_t difference_type
Definition: log0files_dict.h:66
const Log_file * operator->() const
Definition: log0files_dict.cc:196
Log_files_dict::Log_files_map_iterator m_it
Definition: log0files_dict.h:81
Const_iterator & operator--()
Definition: log0files_dict.cc:211
std::bidirectional_iterator_tag iterator_category
Definition: log0files_dict.h:64
Const_iterator(Log_files_dict::Log_files_map_iterator it)
Definition: log0files_dict.cc:188
bool operator!=(const Const_iterator &rhs) const
Definition: log0files_dict.cc:227
const Log_file & operator*() const
Definition: log0files_dict.cc:192
In-memory dictionary of meta data of existing log files.
Definition: log0files_dict.h:56
Const_iterator begin() const
Definition: log0files_dict.cc:232
const Log_files_context & ctx() const
Definition: log0files_dict.cc:66
const Log_file & front() const
Definition: log0files_dict.cc:168
typename Log_files_map::const_iterator Log_files_map_iterator
Definition: log0files_dict.h:59
Log_files_map m_files_by_id
Meta information about each existing redo log file.
Definition: log0files_dict.h:172
void set_size(Log_file_id file_id, os_offset_t new_size)
Changes size of the file.
Definition: log0files_dict.cc:151
Const_iterator file(Log_file_id file_id) const
Provides log file for the given file id.
Definition: log0files_dict.cc:98
void clear()
Clears the whole dictionary.
Definition: log0files_dict.cc:68
ut::map< Log_file_id, Log_file > Log_files_map
Definition: log0files_dict.h:58
Log_files_dict(Log_files_context &files_ctx)
Constructs an empty dictionary.
Definition: log0files_dict.cc:53
void erase(Log_file_id file_id)
Removes the meta data about the given log file (which denotes the file does not exist anymore) from t...
Definition: log0files_dict.cc:70
const Log_file & back() const
Definition: log0files_dict.cc:173
Log_files_dict & operator=(Log_files_dict &&other)
Definition: log0files_dict.cc:60
Const_iterator end() const
Definition: log0files_dict.cc:236
Const_iterator find(lsn_t lsn) const
Searches for an existing log file, that contains the provided lsn.
Definition: log0files_dict.cc:79
void set_full(Log_file_id file_id)
Marks a given log file as full.
Definition: log0files_dict.cc:139
void add(Log_file_id file_id, os_offset_t size_in_bytes, lsn_t start_lsn, bool full, bool consumed, Encryption_metadata &encryption_metadata)
Add meta data for the existing log file.
Definition: log0files_dict.cc:108
bool empty() const
Definition: log0files_dict.cc:166
void set_consumed(Log_file_id file_id)
Marks a given log file as consumed.
Definition: log0files_dict.cc:133
void set_incomplete(Log_file_id file_id)
Marks a given log file as incomplete (undo marking as full).
Definition: log0files_dict.cc:145
const Log_files_context & m_files_ctx
Context within which log files exist.
Definition: log0files_dict.h:169
constexpr lsn_t LOG_START_LSN
The counting of lsn's starts from this value: this must be non-zero.
Definition: log0constants.h:146
bool log_file_compute_logical_capacity(os_offset_t file_size_in_bytes, lsn_t &lsn_capacity)
Computes logical capacity for the given physical size of the redo log file.
Definition: log0files_dict.cc:250
size_t log_files_number_of_existing_files(const Log_files_dict &files)
Counts the total number of existing log files.
Definition: log0files_dict.cc:278
Log_files_dict::Const_iterator log_files_find_largest(const Log_files_dict &files)
Finds the largest existing log file (with the largest m_size_in_bytes).
Definition: log0files_dict.cc:305
os_offset_t log_files_size_of_existing_files(const Log_files_dict &files)
Computes the total size of the existing log files (sum of sizes).
Definition: log0files_dict.cc:287
void log_files_for_each(const Log_files_dict &files, F functor)
Definition: log0files_dict.h:176
bool log_file_compute_end_lsn(lsn_t start_lsn, os_offset_t file_size_in_bytes, lsn_t &end_lsn)
Computes end_lsn for the given: start_lsn and size of the redo log file.
Definition: log0files_dict.cc:260
size_t log_files_number_of_consumed_files(const Log_files_dict &files)
Counts the total number of existing and marked as consumed log files.
Definition: log0files_dict.cc:282
lsn_t log_files_capacity_of_existing_files(const Log_files_dict &files)
Computes the total capacity of the existing log files (sum of capacities).
Definition: log0files_dict.cc:294
size_t Log_file_id
Log file id (0 for ib_redo0)
Definition: log0types.h:65
uint64_t lsn_t
Type used for all log sequence number storage and arithmetic.
Definition: log0types.h:62
void for_each(const Shards< COUNT > &shards, Function &&f) noexcept
Iterate over the shards.
Definition: ut0counter.h:322
Cursor end()
A past-the-end Cursor.
Definition: rules_table_service.cc:191
std::map< Key, Value, Compare, ut::allocator< std::pair< const Key, Value > > > map
Specialization of map which uses ut_allocator.
Definition: ut0new.h:2890
The interface to the operating system file io.
uint64_t os_offset_t
File offset in bytes.
Definition: os0file.h:83
Meta information about single log file.
Definition: log0types.h:453
Configures path to the root directory, where redo subdirectory might be located (or redo log files if...
Definition: log0types.h:203
#define ut_a(EXPR)
Abort execution if EXPR does not evaluate to nonzero.
Definition: ut0dbg.h:56
static uint64_t lsn
Definition: xcom_base.cc:445