24#ifndef CERTIFIER_INCLUDE 
   25#define CERTIFIER_INCLUDE 
   33#include <unordered_map> 
  196      const uchar *data, ulong len,
 
  200      std::map<std::string, std::string> *cert_info) = 0;
 
  202      std::map<std::string, std::string> *cert_info) = 0;
 
  216      std::equal_to<std::string>,
 
  257      const uchar *data, ulong len,
 
  282                  std::list<const char *> *write_set, 
bool generate_group_id,
 
  284                  bool local_transaction);
 
  312      std::map<std::string, std::string> *cert_info) 
override;
 
  326      std::map<std::string, std::string> *cert_info) 
override;
 
  504      bool update_parallel_applier_last_committed_global,
 
  505      bool increment_parallel_applier_sequence_number);
 
  723                int64 *item_previous_sequence_number);
 
  794                      const unsigned char *) 
override;
 
This class is a core component of the database state machine replication protocol.
Definition: certifier.h:133
 
mysql_cond_t broadcast_dispatcher_cond
Definition: certifier.h:176
 
mysql_mutex_t broadcast_dispatcher_lock
Definition: certifier.h:175
 
Certifier_broadcast_thread()
Certifier_broadcast_thread constructor.
Definition: certifier.cc:47
 
void terminate()
Terminate broadcast thread.
Definition: certifier.cc:104
 
THD * broadcast_thd
Definition: certifier.h:171
 
int initialize()
Initialize broadcast thread.
Definition: certifier.cc:73
 
mysql_mutex_t broadcast_run_lock
Definition: certifier.h:173
 
static const int BROADCAST_GTID_EXECUTED_PERIOD
Period (in seconds) between stable transactions set broadcast.
Definition: certifier.h:164
 
int broadcast_gtid_executed()
Broadcast local GTID_EXECUTED to group.
Definition: certifier.cc:207
 
size_t broadcast_counter
Definition: certifier.h:178
 
int broadcast_gtid_executed_period
Definition: certifier.h:179
 
bool aborted
Thread control.
Definition: certifier.h:170
 
void dispatcher()
Broadcast thread worker method.
Definition: certifier.cc:130
 
my_thread_handle broadcast_pthd
Definition: certifier.h:172
 
virtual ~Certifier_broadcast_thread()
Definition: certifier.cc:66
 
thread_state broadcast_thd_state
Definition: certifier.h:177
 
mysql_cond_t broadcast_run_cond
Definition: certifier.h:174
 
Definition: certifier.h:191
 
virtual bool set_group_stable_transactions_set(Gtid_set *executed_gtid_set)=0
 
virtual void handle_view_change()=0
 
virtual ulonglong get_certification_info_size() override=0
 
virtual bool is_conflict_detection_enable()=0
 
~Certifier_interface() override=default
 
virtual void get_certification_info(std::map< std::string, std::string > *cert_info)=0
 
virtual int handle_certifier_data(const uchar *data, ulong len, const Gcs_member_identifier &gcs_member_id)=0
 
virtual int set_certification_info(std::map< std::string, std::string > *cert_info)=0
 
virtual void disable_conflict_detection()=0
 
virtual void enable_conflict_detection()=0
 
virtual int stable_set_handle()=0
 
Definition: certifier_stats_interface.h:29
 
Definition: certifier.h:212
 
static const std::string GTID_EXTRACTED_NAME
Key used to store group_gtid_executed on certification info on View_change_log_event.
Definition: certifier.h:431
 
int get_group_stable_transactions_set_string(char **buffer, size_t *length) override
Returns the transactions in stable set in text format, that is, the set of transactions already appli...
Definition: certifier.cc:1231
 
rpl_sidno group_gtid_sid_map_group_sidno
Variable to store the sidno used for transactions which will be logged with the group_uuid.
Definition: certifier.h:442
 
Certification_info certification_info
Certification database.
Definition: certifier.h:590
 
int set_certification_info(std::map< std::string, std::string > *cert_info) override
Sets the certification info according to the given value.
Definition: certifier.cc:1678
 
bool conflict_detection_enable
Conflict detection is performed when: 1) group is on multi-master mode; 2) group is on single-primary...
Definition: certifier.h:700
 
bool is_conflict_detection_enable() override
Check if conflict detection is enable.
Definition: certifier.cc:1868
 
void compute_group_available_gtid_intervals()
This function computes the available GTID intervals from group UUID and stores them on group_availabl...
Definition: certifier.cc:475
 
int handle_certifier_data(const uchar *data, ulong len, const Gcs_member_identifier &gcs_member_id) override
Queues the packet coming from the reader for future processing.
Definition: certifier.cc:1403
 
int64 parallel_applier_sequence_number
Definition: certifier.h:597
 
int add_specified_gtid_to_group_gtid_executed(Gtid_log_event *gle)
Public method to add the given GTID value in the group_gtid_executed set which is used to support ski...
Definition: certifier.cc:983
 
void clear_certification_info()
Definition: certifier.cc:583
 
Gtid_set * stable_gtid_set
Definition: certifier.h:611
 
int initialize(ulonglong gtid_assignment_block_size)
Initialize certifier.
Definition: certifier.cc:618
 
bool add_item(const char *item, Gtid_set_ref *snapshot_version, int64 *item_previous_sequence_number)
Adds an item from transaction writeset to the certification DB.
Definition: certifier.cc:1169
 
void clear_members()
Method to clear the members.
Definition: certifier.cc:612
 
rpl_gno get_group_next_available_gtid(const char *member_uuid)
This method is used to get the next valid GNO for the transaction that is being executed.
Definition: certifier.cc:1052
 
Gtid_set * group_gtid_extracted
A Gtid_set which contains the gtid extracted from the certification info map of the donor.
Definition: certifier.h:676
 
std::atomic< bool > initialized
Is certifier initialized.
Definition: certifier.h:436
 
void disable_conflict_detection() override
Disables conflict detection.
Definition: certifier.cc:1852
 
Synchronized_queue< Data_packet * > * incoming
Definition: certifier.h:612
 
std::unordered_map< std::string, Gtid_set_ref *, std::hash< std::string >, std::equal_to< std::string >, Malloc_allocator< std::pair< const std::string, Gtid_set_ref * > > > Certification_info
Definition: certifier.h:218
 
void update_certified_transaction_count(bool result, bool local_transaction)
Definition: certifier.cc:1776
 
void clear_incoming()
Clear incoming queue.
Definition: certifier.cc:602
 
Certifier()
Definition: certifier.cc:257
 
Gtid_set::Interval reserve_gtid_block(longlong block_size)
This function reserves a block of GTIDs from the group_available_gtid_intervals list.
Definition: certifier.cc:530
 
int64 parallel_applier_last_sequence_number
Definition: certifier.h:596
 
std::vector< std::string > members
Definition: certifier.h:614
 
std::list< Gtid_set::Interval > group_available_gtid_intervals
List of free GTID intervals in group.
Definition: certifier.h:686
 
~Certifier() override
Definition: certifier.cc:311
 
rpl_sidno views_sidno_group_representation
The sidno used for view log events as seen by the group sid map.
Definition: certifier.h:447
 
void get_last_conflict_free_transaction(std::string *value) override
Get method to retrieve the last conflict free transaction.
Definition: certifier.cc:1821
 
rpl_sidno views_sidno_server_representation
The sidno used for view log events as seen by the server sid map.
Definition: certifier.h:451
 
Gtid generate_view_change_group_gtid()
Generate group GTID for a view change log event.
Definition: certifier.cc:1656
 
rpl_gno certify(Gtid_set *snapshot_version, std::list< const char * > *write_set, bool generate_group_id, const char *member_uuid, Gtid_log_event *gle, bool local_transaction)
This member function SHALL certify the set of items against transactions that have already passed the...
Definition: certifier.cc:683
 
ulonglong get_certification_info_size() override
Get method to retrieve the certification db size.
Definition: certifier.cc:1817
 
void update_parallel_applier_indexes(bool update_parallel_applier_last_committed_global, bool increment_parallel_applier_sequence_number)
This function updates parallel applier indexes.
Definition: certifier.cc:651
 
void get_certification_info(std::map< std::string, std::string > *cert_info) override
Retrieves the current certification info.
Definition: certifier.cc:1620
 
bool certifying_already_applied_transactions
Definition: certifier.h:658
 
ulonglong gtids_assigned_in_blocks_counter
Definition: certifier.h:692
 
Checkable_rwlock * stable_gtid_set_lock
Stable set and garbage collector variables.
Definition: certifier.h:609
 
bool same_member_message_discarded
Definition: certifier.h:601
 
ulonglong positive_cert
Definition: certifier.h:593
 
rpl_gno get_next_available_gtid_candidate(rpl_sidno sidno, rpl_gno start, rpl_gno end) const
Generate the candidate GNO for the current transaction.
Definition: certifier.cc:1123
 
ulonglong get_negative_certified() override
Get method to retrieve the number of negatively certified transactions.
Definition: certifier.cc:1815
 
ulonglong negative_cert
Definition: certifier.h:594
 
bool set_group_stable_transactions_set(Gtid_set *executed_gtid_set) override
This member function shall add transactions to the stable set.
Definition: certifier.cc:1262
 
mysql_mutex_t LOCK_certification_info
Definition: certifier.h:604
 
ulonglong get_positive_certified() override
Get the number of postively certified transactions by the certifier.
Definition: certifier.cc:1813
 
int initialize_server_gtid_set(bool get_server_gtid_retrieved=false)
Method to initialize the group_gtid_executed gtid set with the server gtid executed set and applier r...
Definition: certifier.cc:339
 
uint64 garbage_collect_runs
Definition: certifier.h:753
 
void add_to_group_gtid_executed_internal(rpl_sidno sidno, rpl_gno gno)
Internal method to add the given gtid gno in the group_gtid_executed set.
Definition: certifier.cc:564
 
Sid_map * group_gtid_sid_map
Definition: certifier.h:663
 
int64 parallel_applier_last_committed_global
Definition: certifier.h:595
 
void handle_view_change() override
Handle view changes on certifier.
Definition: certifier.cc:1607
 
Gtid_set * get_certified_write_set_snapshot_version(const char *item)
Find the snapshot_version corresponding to an item.
Definition: certifier.cc:1213
 
bool is_initialized()
Definition: certifier.h:573
 
Sid_map * stable_sid_map
Definition: certifier.h:610
 
uint64 gtid_assignment_block_size
The group GTID assignment block size.
Definition: certifier.h:681
 
std::map< std::string, Gtid_set::Interval > member_gtids
Extends the above to allow GTIDs to be assigned in blocks per member.
Definition: certifier.h:691
 
int add_group_gtid_to_group_gtid_executed(rpl_gno gno)
Public method to add the given gno value to the group_gtid_executed set which is used to support skip...
Definition: certifier.cc:1013
 
void enable_conflict_detection() override
Enables conflict detection.
Definition: certifier.cc:1839
 
bool certifier_garbage_collection_block
Definition: certifier.h:600
 
Gtid_set * group_gtid_executed
Definition: certifier.h:669
 
static const std::string CERTIFICATION_INFO_ERROR_NAME
Key used to store errors in the certification info on View_change_log_event.
Definition: certifier.h:227
 
Gtid last_conflict_free_transaction
Last conflict free transaction identification.
Definition: certifier.h:585
 
rpl_gno get_next_available_gtid(const char *member_uuid, rpl_sidno sidno)
This method is used to get the next valid GNO for the given sidno, for the transaction that is being ...
Definition: certifier.cc:1056
 
int stable_set_handle() override
Computes intersection between all sets received, so that we have the already applied transactions on ...
Definition: certifier.cc:1480
 
mysql_mutex_t LOCK_members
Definition: certifier.h:702
 
void garbage_collect()
Removes the intersection of the received transactions stable sets from certification database.
Definition: certifier.cc:1287
 
Sid_map * certification_info_sid_map
Definition: certifier.h:591
 
Certifier_broadcast_thread * broadcast_thread
Broadcast thread.
Definition: certifier.h:707
 
This has the functionality of mysql_rwlock_t, with two differences:
Definition: rpl_gtid.h:309
 
It represents the identity of a group member within a certain group.
Definition: gcs_member_identifier.h:40
 
Definition: certifier.h:761
 
enum_payload_item_type
Definition: certifier.h:763
 
@ PIT_MAX
Definition: certifier.h:771
 
@ PIT_GTID_EXECUTED
Definition: certifier.h:768
 
@ PIT_UNKNOWN
Definition: certifier.h:765
 
Gtid_Executed_Message()
Gtid_Executed_Message constructor.
Definition: certifier.cc:1886
 
std::vector< uchar > data
Definition: certifier.h:797
 
~Gtid_Executed_Message() override
 
void append_gtid_executed(uchar *gtid_data, size_t len)
Appends Gtid executed information in a raw format.
Definition: certifier.cc:1891
 
void encode_payload(std::vector< unsigned char > *buffer) const override
Encodes the contents of this instance payload into the buffer.
Definition: certifier.cc:1895
 
void decode_payload(const unsigned char *buffer, const unsigned char *) override
Decodes the contents of the buffer and sets the payload field values according to the values decoded.
Definition: certifier.cc:1903
 
This is a subclass if Gtid_event and Log_event.
Definition: log_event.h:3790
 
This class extends Gtid_set to include a reference counter.
Definition: certifier.h:55
 
Gtid_set_ref(Sid_map *sid_map, int64 parallel_applier_sequence_number)
Definition: certifier.h:57
 
int64 parallel_applier_sequence_number
Definition: certifier.h:107
 
void set_garbage_collect_counter(uint64 ver)
Set garbage collector counter when Gtid_set_ref was checked is subset no equals of gtid_stable_set.
Definition: certifier.h:89
 
virtual ~Gtid_set_ref()=default
 
uint64 garbage_collect_counter
Definition: certifier.h:108
 
uint64 get_garbage_collect_counter()
Get garbage collector counter when Gtid_set_ref was checked is subset no equals of gtid_stable_set.
Definition: certifier.h:99
 
size_t link()
Increment the number of references by one.
Definition: certifier.h:73
 
size_t unlink()
Decrement the number of references by one.
Definition: certifier.h:80
 
int64 get_parallel_applier_sequence_number() const
Definition: certifier.h:101
 
size_t reference_counter
Definition: certifier.h:106
 
Represents a set of GTIDs.
Definition: rpl_gtid.h:1455
 
Sid_map * sid_map
Sid_map associated with this Gtid_set.
Definition: rpl_gtid.h:2327
 
Malloc_allocator is a C++ STL memory allocator based on my_malloc/my_free.
Definition: malloc_allocator.h:63
 
This is the base GCS plugin message.
Definition: gcs_plugin_messages.h:64
 
Represents a bidirectional map between SID and SIDNO.
Definition: rpl_gtid.h:724
 
Definition: plugin_utils.h:181
 
For each client connection we create a separate thread with THD serving as a thread/connection descri...
Definition: sql_lexer_thd.h:34
 
static void start(mysql_harness::PluginFuncEnv *env)
Definition: http_auth_backend_plugin.cc:177
 
#define DBUG_EXECUTE_IF(keyword, a1)
Definition: my_dbug.h:171
 
Some integer typedefs for easier portability.
 
unsigned long long int ulonglong
Definition: my_inttypes.h:56
 
unsigned char uchar
Definition: my_inttypes.h:52
 
int64_t int64
Definition: my_inttypes.h:68
 
long long int longlong
Definition: my_inttypes.h:55
 
uint64_t uint64
Definition: my_inttypes.h:69
 
bool length(const dd::Spatial_reference_system *srs, const Geometry *g1, double *length, bool *null) noexcept
Computes the length of linestrings and multilinestrings.
Definition: length.cc:76
 
mutable_buffer buffer(void *p, size_t n) noexcept
Definition: buffer.h:420
 
Cursor end()
A past-the-end Cursor.
Definition: rules_table_service.cc:192
 
std::unordered_map< Key, Value, Hash, Key_equal, ut::allocator< std::pair< const Key, Value > > > unordered_map
Definition: ut0new.h:2903
 
int rpl_sidno
Type of SIDNO (source ID number, first component of GTID)
Definition: rpl_gtid.h:96
 
binary_log::gtids::gno_t rpl_gno
GNO, the second (numeric) component of a GTID, is an alias of binary_log::gtids::gno_t.
Definition: rpl_gtid.h:103
 
Represents one element in the linked list of intervals associated with a SIDNO.
Definition: rpl_gtid.h:1901
 
TODO: Move this structure to libbinlogevents/include/control_events.h when we start using C++11.
Definition: rpl_gtid.h:1066
 
Definition: my_thread_bits.h:52
 
An instrumented cond structure.
Definition: mysql_cond_bits.h:50
 
An instrumented mutex structure.
Definition: mysql_mutex_bits.h:50
 
Definition: plugin_utils.h:47