![]() |
MySQL 26.7.0
Source Code Documentation
|
Class responsible for removing relay log file, when the last handle to this deleter is released. More...
#include <relay_log_deleter.h>
Public Member Functions | |
| Relay_log_deleter (const std::string &rl_file_name, Log_purge_controller_sptr purger) | |
| Constructor that initializes metadata needed for relay log deletion. More... | |
| ~Relay_log_deleter () | |
| Destructor that removes the relay log file when the last reference is released. More... | |
| void | add_subscriber () |
| Adds a subscriber to handled relay log file. More... | |
| void | set_subscriber_success () |
| Notifies that subscriber succeeded. More... | |
| const std::string & | get_file_name () const |
| Handled file name accessor. More... | |
Private Member Functions | |
| void | remove_handled_relay_log () const |
| Physically removes relay log file from disk and index file. More... | |
Private Attributes | |
| std::string | m_rl_file_name {""} |
| Relay log name handled by this deleter. More... | |
| std::atomic< std::size_t > | m_subscribers {0} |
| With below variables we track relay log file subscribers and the number of successful subscribers. More... | |
| std::atomic< std::size_t > | m_successfull_subscribers {0} |
| The number of successful subscribers (see above) More... | |
| Log_purge_controller_sptr | m_purger |
| Pointer to the relay log purger. More... | |
Class responsible for removing relay log file, when the last handle to this deleter is released.
To know if we are allowed to delete this relay log file, we need to track its subscribers and the number of successfull subscribers. If these two numbers are equal and the last reference to the Relay_log_deleter is released, we are allowed to remove the relay log. Otherwise, deleter won't remove the file. Object of this class is created by relay log metadata reader. Each event batch in a transaction will contain shared reference to this object. When event batch is successfully processed, i.e., job done notified in
| mysql::csa::Relay_log_deleter::Relay_log_deleter | ( | const std::string & | rl_file_name, |
| Log_purge_controller_sptr | purger | ||
| ) |
Constructor that initializes metadata needed for relay log deletion.
| rl_file_name | Referenced relay log filename |
| purger | Relay log purger pointer |
| mysql::csa::Relay_log_deleter::~Relay_log_deleter | ( | ) |
Destructor that removes the relay log file when the last reference is released.
| void mysql::csa::Relay_log_deleter::add_subscriber | ( | ) |
Adds a subscriber to handled relay log file.
| const std::string & mysql::csa::Relay_log_deleter::get_file_name | ( | ) | const |
Handled file name accessor.
|
private |
Physically removes relay log file from disk and index file.
| void mysql::csa::Relay_log_deleter::set_subscriber_success | ( | ) |
Notifies that subscriber succeeded.
|
private |
Pointer to the relay log purger.
|
private |
Relay log name handled by this deleter.
|
private |
With below variables we track relay log file subscribers and the number of successful subscribers.
If the number of subscribers is equal to the number of successful subscribers, we may remove the relay log. Inverse logic could be implemented with one atomic flag, however, this way we would not know if some transaction was killed without setting an error state (TBC).
|
private |
The number of successful subscribers (see above)