24#ifndef GCS_EVENT_HANDLERS_INCLUDE
25#define GCS_EVENT_HANDLERS_INCLUDE
69 ulong components_stop_timeout);
80 const std::vector<Gcs_member_identifier> &members,
81 const std::vector<Gcs_member_identifier> &unreachable)
const override;
122 const std::string &message_origin)
const;
145 const char *error_message,
146 const unsigned char **payload_item_data,
147 size_t *payload_item_length)
const;
154 bool is_joining,
bool is_leaving)
const;
156 bool is_leaving)
const;
158 bool is_leaving)
const;
173 const std::vector<Gcs_member_identifier> &members,
190 std::string &suggested_primary)
const;
193 bool is_joining)
const;
278 std::string &group_action_running_initiator,
279 std::string &group_action_running_description)
const;
325 std::string &all_hosts,
326 std::string &primary_host)
const;
342 std::set<Group_member_info *, Group_member_info_pointer_comparator>
Definition: applier.h:276
Definition: compatibility_module.h:41
This interface is implemented by those who wish to receive messages.
Definition: gcs_communication_event_listener.h:36
This interface is implemented by those who wish to receive Control Interface notifications.
Definition: gcs_control_event_listener.h:52
It represents the identity of a group member within a certain group.
Definition: gcs_member_identifier.h:40
This class serves as data container for information flowing in the GCS ecosystem.
Definition: gcs_message.h:48
Class that represents the data that is exchanged within a group.
Definition: gcs_message.h:357
This represents the membership view that a member has from a group.
Definition: gcs_view.h:55
Definition: member_info.h:81
Group_member_status
Definition: member_info.h:175
bool has_lower_uuid(Group_member_info *other)
Return true if server uuid is lower than other member server uuid.
Definition: member_info.cc:1041
A convenience context class used to share information between the event handlers and the notifier.
Definition: notification.h:35
Definition: gcs_event_handlers.h:59
bool was_member_expelled_from_group(const Gcs_view &view) const
This method checks if member was expelled from the group due to network failures.
Definition: gcs_event_handlers.cc:1042
void handle_single_primary_message(Plugin_gcs_message *processed_message) const
Definition: gcs_event_handlers.cc:505
void handle_transaction_prepared_message(const Gcs_message &message) const
Definition: gcs_event_handlers.cc:313
bool get_first_payload_item_or_leave(const Gcs_message &message, const char *error_message, const unsigned char **payload_item_data, size_t *payload_item_length) const
Gets the first payload item raw data, or leaves the group if the message is malformed.
Definition: gcs_event_handlers.cc:222
void handle_transactional_message(const Gcs_message &message) const
Definition: gcs_event_handlers.cc:237
void handle_leader_election_if_needed(enum_primary_election_mode election_mode, std::string &suggested_primary) const
This method handles the election of a new primary node when the plugin runs in single primary mode.
Definition: gcs_event_handlers.cc:1065
int update_group_info_manager(const Gcs_view &new_view, const Exchanged_data &exchanged_data, bool is_joining, bool is_leaving) const
Definition: gcs_event_handlers.cc:1081
Gcs_message_data * get_exchangeable_data() const override
This method is called when the Data Exchange is about to happen in order for the client to provide wh...
Definition: gcs_event_handlers.cc:1663
void handle_sync_before_execution_message(const Gcs_message &message) const
Definition: gcs_event_handlers.cc:347
int process_local_exchanged_data(const Exchanged_data &exchanged_data, bool is_joining) const
Definition: gcs_event_handlers.cc:1494
void get_hosts_from_view(const std::vector< Gcs_member_identifier > &members, std::string &all_hosts, std::string &primary_host) const
This function return all members present in vector of Gcs_member_identifier in HOST:PORT format separ...
Definition: gcs_event_handlers.cc:861
void handle_joining_members(const Gcs_view &new_view, bool is_joining, bool is_leaving) const
Definition: gcs_event_handlers.cc:1168
void handle_leaving_members(const Gcs_view &new_view, bool is_joining, bool is_leaving) const
Definition: gcs_event_handlers.cc:1448
void handle_recovery_metadata(const Gcs_message &message) const
Definition: gcs_event_handlers.cc:568
void on_suspicions(const std::vector< Gcs_member_identifier > &members, const std::vector< Gcs_member_identifier > &unreachable) const override
This member function is called when the set of suspicions has changed in the underlying communication...
Definition: gcs_event_handlers.cc:723
void disable_read_mode_for_compatible_members(bool force_check=false) const
This function disable read-only mode when member version is compatible with group.
Definition: gcs_event_handlers.cc:2214
void handle_group_action_message(const Gcs_message &message) const
Definition: gcs_event_handlers.cc:532
Compatibility_module * compatibility_manager
Definition: gcs_event_handlers.h:345
bool set_number_of_members_on_view_changed_to_10
Definition: gcs_event_handlers.h:354
Plugin_gcs_events_handler(Applier_module_interface *applier_module, Recovery_module *recovery_module, Compatibility_module *compatibility_manager, ulong components_stop_timeout)
Plugin_gcs_events_handler constructor.
Definition: gcs_event_handlers.cc:57
ulong stop_wait_timeout
Definition: gcs_event_handlers.h:351
bool pre_process_message(Plugin_gcs_message *plugin_message, const std::string &message_origin) const
This method passes the message to message listeners.
Definition: gcs_event_handlers.cc:202
void on_message_received(const Gcs_message &message) const override
This method is called whenever a message is to be delivered.
Definition: gcs_event_handlers.cc:81
void handle_recovery_message(Plugin_gcs_message *message) const
Definition: gcs_event_handlers.cc:400
st_compatibility_types check_version_compatibility_with_group() const
When the member is joining, cycle through all members on group and see if it is compatible with them.
Definition: gcs_event_handlers.cc:1902
Recovery_module * recovery_module
Definition: gcs_event_handlers.h:336
int check_group_compatibility(size_t number_of_members) const
Checks the compatibility of the member with the group.
Definition: gcs_event_handlers.cc:1828
void handle_certifier_message(const Gcs_message &message) const
Definition: gcs_event_handlers.cc:372
bool is_member_on_vector(const std::vector< Gcs_member_identifier > &members, const Gcs_member_identifier &member_id) const
Verifies if a certain Vector of Member Ids contains a given member id.
Definition: gcs_event_handlers.cc:1484
bool is_group_running_a_primary_election() const
Check if the group is running a primary election.
Definition: gcs_event_handlers.cc:2199
Applier_module_interface * applier_module
Definition: gcs_event_handlers.h:335
void leave_group_on_recovery_metadata_error(std::string error_message) const
Leave group on recovering metadata error.
Definition: gcs_event_handlers.cc:713
void log_members_joining_message(const Gcs_view &new_view) const
Logs member joining message to error logs from view.
Definition: gcs_event_handlers.cc:849
void on_view_changed(const Gcs_view &new_view, const Exchanged_data &exchanged_data) const override
This method is called when the view is ready to be installed.
Definition: gcs_event_handlers.cc:899
bool is_group_running_a_configuration_change(std::string &group_action_running_initiator, std::string &group_action_running_description) const
Check if a member is not entering a group where an action is running.
Definition: gcs_event_handlers.cc:2179
void collect_members_executed_sets(View_change_packet *view_packet) const
This method takes all the group executed sets and adds those belonging to non recovering member to th...
Definition: gcs_event_handlers.cc:2035
void log_messages_during_member_leave(const Gcs_view &new_view) const
Logs member leaving message to error logs from view.
Definition: gcs_event_handlers.cc:807
Notification_context m_notification_ctx
The notification context for the GCS delivery thread.
Definition: gcs_event_handlers.h:358
~Plugin_gcs_events_handler() override
Definition: gcs_event_handlers.cc:76
void handle_transactional_with_guarantee_message(const Gcs_message &message) const
Definition: gcs_event_handlers.cc:267
void leave_on_malformed_message(const char *error_message) const
Logs and leaves the group after receiving a malformed message.
Definition: gcs_event_handlers.cc:211
void update_member_status(const std::vector< Gcs_member_identifier > &members, Group_member_info::Group_member_status status, Group_member_info::Group_member_status old_equal_to, Group_member_info::Group_member_status old_different_from) const
This method updates the status of the members in the list according to the given parameters.
Definition: gcs_event_handlers.cc:1785
void handle_stats_message(const Gcs_message &message) const
Definition: gcs_event_handlers.cc:491
int compare_member_transaction_sets() const
Method that compares the group's aggregated GTID set against the joiner GTID set.
Definition: gcs_event_handlers.cc:1961
st_compatibility_types * joiner_compatibility_status
The status of this member when it joins.
Definition: gcs_event_handlers.h:348
std::set< Group_member_info *, Group_member_info_pointer_comparator > * temporary_states
Definition: gcs_event_handlers.h:343
int compare_member_option_compatibility() const
Method that compares the member options with the value of the same option on all other members.
Definition: gcs_event_handlers.cc:2059
void set_stop_wait_timeout(ulong timeout)
Sets the component stop timeout.
Definition: gcs_event_handlers.h:88
This is the base GCS plugin message.
Definition: gcs_plugin_messages.h:65
Definition: recovery.h:39
A packet to send view change related info to the applier.
Definition: pipeline_interfaces.h:116
st_compatibility_types
Definition: compatibility_module.h:33
std::vector< std::pair< Gcs_member_identifier *, Gcs_message_data * > > Exchanged_data
Alias for the Data exchanged and delivered from all nodes.
Definition: gcs_control_event_listener.h:40
static bool timeout(bool(*wait_condition)())
Timeout function.
Definition: log0meb.cc:499
enum_primary_election_mode
Enum for election types.
Definition: primary_election_include.h:33
required uint32 status
Definition: replication_asynchronous_connection_failover.proto:61
Group_member_info_pointer_comparator to guarantee uniqueness.
Definition: gcs_event_handlers.h:47
bool operator()(Group_member_info *one, Group_member_info *other) const
Definition: gcs_event_handlers.h:48