MySQL 9.1.0
Source Code Documentation
|
Action that changes the GCS protocol version in use by the group. More...
#include <communication_protocol_action.h>
Public Member Functions | |
Communication_protocol_action () | |
Communication_protocol_action (Gcs_protocol_version gcs_protocol) | |
~Communication_protocol_action () final | |
void | get_action_message (Group_action_message **message) final |
Get the message with parameters to this action. More... | |
int | process_action_message (Group_action_message &message, const std::string &message_origin) final |
enum_action_execution_result | execute_action (bool invoking_member, Plugin_stage_monitor_handler *stage_handler, Notification_context *) final |
Execute the action. More... | |
bool | stop_action_execution (bool killed) final |
Group_action_diagnostics * | get_execution_info () final |
Gets the info about execution, be it success or failure. More... | |
Public Member Functions inherited from Group_action | |
virtual | ~Group_action ()=0 |
virtual PSI_stage_key | get_action_stage_termination_key () |
For this action, what is the PSI key for the last stage when the action is terminating. More... | |
Private Member Functions | |
int | set_consensus_leaders () const |
Private Attributes | |
Group_action_diagnostics | m_diagnostics |
Stores textual information about the action's execution. More... | |
Gcs_protocol_version | m_gcs_protocol |
The GCS protocol to change to. More... | |
std::future< void > | m_protocol_change_done |
Future on which to wait for the protocol change to finish in the local node. More... | |
Additional Inherited Members | |
Public Types inherited from Group_action | |
enum | enum_action_execution_result { GROUP_ACTION_RESULT_TERMINATED = 0 , GROUP_ACTION_RESULT_ERROR = 1 , GROUP_ACTION_RESULT_RESTART = 2 , GROUP_ACTION_RESULT_ABORTED = 3 , GROUP_ACTION_RESULT_KILLED = 4 , GROUP_ACTION_RESULT_END = 5 } |
Enum for the end results of a action execution. More... | |
Action that changes the GCS protocol version in use by the group.
Note that this action's logic is actually done in process_action_message instead of execute_action. This is because process_action_message is executed in the same logical instant on all group members (in the GCS thread) while execute_action is executed nondeterministically on its own thread.
Communication_protocol_action::Communication_protocol_action | ( | ) |
|
explicit |
|
finaldefault |
|
finalvirtual |
Execute the action.
invoking_member | is the member that invoked it |
stage_handler | the stage handler to report progress |
Implements Group_action.
|
finalvirtual |
Get the message with parameters to this action.
[out] | message | the message to start the action |
Implements Group_action.
|
finalvirtual |
Gets the info about execution, be it success or failure.
Implements Group_action.
|
finalvirtual |
Implements Group_action.
|
private |
|
finalvirtual |
Implements Group_action.
|
private |
Stores textual information about the action's execution.
|
private |
The GCS protocol to change to.
|
private |
Future on which to wait for the protocol change to finish in the local node.