MySQL 8.4.2
Source Code Documentation
|
#include <applier_handler.h>
Public Member Functions | |
Applier_handler () | |
int | handle_event (Pipeline_event *ev, Continuation *cont) override |
Handling of an event as defined in the handler implementation. More... | |
int | handle_action (Pipeline_action *action) override |
Handling of an action as defined in the handler implementation. More... | |
int | initialize () override |
Initialization as defined in the handler implementation. More... | |
int | terminate () override |
Terminate the execution as defined in the handler implementation. More... | |
bool | is_unique () override |
This method identifies the handler as being unique. More... | |
int | get_role () override |
This method returns the handler role. More... | |
int | handle_binary_log_event (Pipeline_event *pevent, Continuation *cont) |
This method handles binary log events by storing them so they can be used on next handler. More... | |
int | handle_applier_event (Pipeline_event *pevent, Continuation *cont) |
This method handles applier context events by storing them so they can be used on next handler. More... | |
int | initialize_repositories (bool reset_logs, ulong plugin_shutdown_timeout) |
Initializes the SQL thread when receiving a configuration package. More... | |
int | start_applier_thread () |
Starts the SQL thread when receiving a action package. More... | |
int | stop_applier_thread () |
Stops the SQL thread when receiving a action package. More... | |
bool | is_applier_thread_waiting () |
Checks if the applier, and its workers when parallel applier is enabled, has already consumed all relay log, that is, applier is waiting for transactions to be queued. More... | |
int | wait_for_gtid_execution (double timeout) |
Checks if all the queued transactions were executed. More... | |
int | wait_for_gtid_execution (std::string &retrieved_set, double timeout, bool update_THD_status=true) |
Checks if all the given transactions were executed. More... | |
int | is_partial_transaction_on_relay_log () |
Checks if the channel's relay log contains partial transaction. More... | |
Public Member Functions inherited from Event_handler | |
Event_handler () | |
virtual | ~Event_handler ()=default |
void | plug_next_handler (Event_handler *next_handler) |
Plug an handler to be the next in line for execution. More... | |
void | append (Event_handler *last_handler) |
Append an handler to be the last in line for execution. More... | |
int | terminate_pipeline () |
Shutdown and delete all handlers in the pipeline. More... | |
Private Attributes | |
Replication_thread_api | channel_interface |
Additional Inherited Members | |
Static Public Member Functions inherited from Event_handler | |
static void | append_handler (Event_handler **pipeline, Event_handler *event_handler) |
Append an handler to a given pipeline. More... | |
static void | get_handler_by_role (Event_handler *pipeline, int role, Event_handler **event_handler) |
Returns an handler that plays the given role. More... | |
Protected Member Functions inherited from Event_handler | |
int | next (Pipeline_event *event, Continuation *continuation) |
Pass the event to the next handler in line. More... | |
int | next (Pipeline_action *action) |
Pass the action to the next handler in line. More... | |
|
default |
|
overridevirtual |
This method returns the handler role.
Handlers can have different roles according to the tasks they represent. Is based on this role that certain components can extract and interact with pipeline handlers. This means that if a role is given to a singleton handler, no one else can have that role.
Implements Event_handler.
|
overridevirtual |
Handling of an action as defined in the handler implementation.
As the handler can be included in a pipeline, somewhere in the method, the handler.next(action) method shall be invoked to allow the passing of the action to the next handler.
[in] | action | the pipeline event to be handled |
Implements Event_handler.
int Applier_handler::handle_applier_event | ( | Pipeline_event * | pevent, |
Continuation * | cont | ||
) |
This method handles applier context events by storing them so they can be used on next handler.
[in] | pevent | the event to be injected |
[in] | cont | the object used to wait |
0 | OK |
!=0 | Error |
int Applier_handler::handle_binary_log_event | ( | Pipeline_event * | pevent, |
Continuation * | cont | ||
) |
This method handles binary log events by storing them so they can be used on next handler.
[in] | pevent | the event to be injected |
[in] | cont | the object used to wait |
0 | OK |
!=0 | Error |
|
overridevirtual |
Handling of an event as defined in the handler implementation.
As the handler can be included in a pipeline, somewhere in the method, the handler.next(event,continuation) method shall be invoked to allow the passing of the event to the next handler.
Also, if an error occurs, the continuation object shall be used to propagate such error. This class can also be used to know/report when the transaction to whom the event belongs was discarded.
[in] | event | the pipeline event to be handled |
[in,out] | continuation | termination notification object. |
Implements Event_handler.
|
overridevirtual |
Initialization as defined in the handler implementation.
Implements Event_handler.
int Applier_handler::initialize_repositories | ( | bool | reset_logs, |
ulong | plugin_shutdown_timeout | ||
) |
Initializes the SQL thread when receiving a configuration package.
reset_logs | if a reset was executed in the server |
plugin_shutdown_timeout | the plugin's timeout for component shutdown |
0 | OK |
!=0 | Error |
bool Applier_handler::is_applier_thread_waiting | ( | ) |
Checks if the applier, and its workers when parallel applier is enabled, has already consumed all relay log, that is, applier is waiting for transactions to be queued.
true | the applier is waiting |
false | otherwise |
int Applier_handler::is_partial_transaction_on_relay_log | ( | ) |
Checks if the channel's relay log contains partial transaction.
true | If relaylog contains partial transaction. |
false | If relaylog does not contain partial transaction. |
|
overridevirtual |
This method identifies the handler as being unique.
An handler that is defined as unique is an handler that cannot be used more than once in a pipeline. Such tasks as certification and event application can only be done once. Unique handlers are also the only that, by being one of a kind, can be extracted during the pipeline life allowing dynamic changes to them.
true | is a unique handler |
false | is a repeatable handler |
Implements Event_handler.
int Applier_handler::start_applier_thread | ( | ) |
Starts the SQL thread when receiving a action package.
0 | OK |
!=0 | Error |
int Applier_handler::stop_applier_thread | ( | ) |
Stops the SQL thread when receiving a action package.
0 | OK |
!=0 | Error |
|
overridevirtual |
Terminate the execution as defined in the handler implementation.
Implements Event_handler.
int Applier_handler::wait_for_gtid_execution | ( | double | timeout | ) |
Checks if all the queued transactions were executed.
timeout | the time (seconds) after which the method returns if the above condition was not satisfied |
0 | All transactions were executed |
-1 | A timeout occurred |
-2 | An error occurred |
int Applier_handler::wait_for_gtid_execution | ( | std::string & | retrieved_set, |
double | timeout, | ||
bool | update_THD_status = true |
||
) |
Checks if all the given transactions were executed.
retrieved_set | the set in string format of transaction to wait for |
timeout | the time (seconds) after which the method returns if the above condition was not satisfied |
update_THD_status | Shall the method update the THD stage |
0 | All transactions were executed |
-1 | A timeout occurred |
-2 | An error occurred |
|
private |