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;
121 const std::string &message_origin)
const;
127 bool is_joining,
bool is_leaving)
const;
129 bool is_leaving)
const;
131 bool is_leaving)
const;
146 const std::vector<Gcs_member_identifier> &members,
163 std::string &suggested_primary)
const;
166 bool is_joining)
const;
251 std::string &group_action_running_initiator,
252 std::string &group_action_running_description)
const;
298 std::string &all_hosts,
299 std::string &primary_host)
const;
308 std::set<Group_member_info *, Group_member_info_pointer_comparator>
Definition: applier.h:240
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:169
bool has_lower_uuid(Group_member_info *other)
Return true if server uuid is lower than other member server uuid.
Definition: member_info.cc:899
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:765
void handle_single_primary_message(Plugin_gcs_message *processed_message) const
Definition: gcs_event_handlers.cc:411
void handle_transaction_prepared_message(const Gcs_message &message) const
Definition: gcs_event_handlers.cc:240
void handle_transactional_message(const Gcs_message &message) const
Definition: gcs_event_handlers.cc:176
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:788
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:804
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:1320
void log_members_leaving_message(const Gcs_view &new_view) const
Logs member leaving message to error logs from view.
Definition: gcs_event_handlers.cc:556
void handle_sync_before_execution_message(const Gcs_message &message) const
Definition: gcs_event_handlers.cc:261
int process_local_exchanged_data(const Exchanged_data &exchanged_data, bool is_joining) const
Definition: gcs_event_handlers.cc:1164
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:584
void handle_joining_members(const Gcs_view &new_view, bool is_joining, bool is_leaving) const
Definition: gcs_event_handlers.cc:859
void handle_leaving_members(const Gcs_view &new_view, bool is_joining, bool is_leaving) const
Definition: gcs_event_handlers.cc:1118
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:472
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:1876
void handle_group_action_message(const Gcs_message &message) const
Definition: gcs_event_handlers.cc:438
Compatibility_module * compatibility_manager
Definition: gcs_event_handlers.h:311
bool set_number_of_members_on_view_changed_to_10
Definition: gcs_event_handlers.h:320
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:54
ulong stop_wait_timeout
Definition: gcs_event_handlers.h:317
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:167
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:78
void handle_recovery_message(Plugin_gcs_message *message) const
Definition: gcs_event_handlers.cc:306
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:1557
Recovery_module * recovery_module
Definition: gcs_event_handlers.h:302
int check_group_compatibility(size_t number_of_members) const
Checks the compatibility of the member with the group.
Definition: gcs_event_handlers.cc:1483
void handle_certifier_message(const Gcs_message &message) const
Definition: gcs_event_handlers.cc:281
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:1154
bool is_group_running_a_primary_election() const
Check if the group is running a primary election.
Definition: gcs_event_handlers.cc:1861
Applier_module_interface * applier_module
Definition: gcs_event_handlers.h:301
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:572
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:622
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:1841
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:1706
Notification_context m_notification_ctx
The notification context for the GCS delivery thread.
Definition: gcs_event_handlers.h:324
~Plugin_gcs_events_handler() override
Definition: gcs_event_handlers.cc:73
void handle_transactional_with_guarantee_message(const Gcs_message &message) const
Definition: gcs_event_handlers.cc:203
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:1440
void handle_stats_message(const Gcs_message &message) const
Definition: gcs_event_handlers.cc:397
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:1632
st_compatibility_types * joiner_compatibility_status
The status of this member when it joins.
Definition: gcs_event_handlers.h:314
std::set< Group_member_info *, Group_member_info_pointer_comparator > * temporary_states
Definition: gcs_event_handlers.h:309
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:1730
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:64
Definition: recovery.h:45
A packet to send view change related info to the applier.
Definition: applier.h:91
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:496
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