24#ifndef CONSISTENCY_MANAGER_INCLUDED 
   25#define CONSISTENCY_MANAGER_INCLUDED 
   27#define CONSISTENCY_INFO_OUTCOME_OK 0 
   28#define CONSISTENCY_INFO_OUTCOME_ERROR 1 
   29#define CONSISTENCY_INFO_OUTCOME_COMMIT 2 
   47    std::unique_ptr<Transaction_consistency_info>;
 
   69  void *
operator new(
size_t size, 
const std::nothrow_t &) 
noexcept {
 
   86  void operator delete(
void *ptr, 
const std::nothrow_t &) 
noexcept {
 
   99  void *
operator new(
size_t size) 
noexcept {
 
  113  void operator delete(
void *ptr) 
noexcept { 
my_free(ptr); }
 
  134      Members_list *members_that_must_prepare_the_transaction);
 
  239      const std::vector<Gcs_member_identifier> &leaving_members);
 
  266  std::unique_ptr<Checkable_rwlock>
 
  277typedef std::pair<Pipeline_event *, Transaction_consistency_manager_key>
 
  281    std::less<Transaction_consistency_manager_key>,
 
  320      std::unique_ptr<Transaction_consistency_info> transaction_info);
 
  371      const std::vector<Gcs_member_identifier> &leaving_members);
 
  409                               ulong gr_consistency_level, ulong 
timeout,
 
  411                               const THD *thd) 
override;
 
  524      const THD *thd) 
const;
 
  564  std::list<my_thread_id, Malloc_allocator<my_thread_id>>
 
This has the functionality of mysql_rwlock_t, with two differences:
Definition: rpl_gtid.h:324
 
It represents the identity of a group member within a certain group.
Definition: gcs_member_identifier.h:40
 
Group_member_status
Definition: member_info.h:173
 
Listener for transaction life cycle events.
Definition: group_transaction_observation_manager.h:33
 
enum_transaction_origin
Enum for transaction origins.
Definition: group_transaction_observation_manager.h:36
 
Class that contains the logic to hold transactions when group_replication_consistency is set to BEFOR...
Definition: hold_transactions.h:36
 
Malloc_allocator is a C++ STL memory allocator based on my_malloc/my_free.
Definition: malloc_allocator.h:63
 
A wrapper for log events/packets.
Definition: pipeline_interfaces.h:167
 
For each client connection we create a separate thread with THD serving as a thread/connection descri...
Definition: sql_lexer_thd.h:36
 
The consistency information of a transaction, including its configuration and state.
Definition: consistency_manager.h:55
 
gr::Gtid_tsid m_tsid
Definition: consistency_manager.h:261
 
const uint64_t m_begin_timestamp
Definition: consistency_manager.h:270
 
Transaction_consistency_info(my_thread_id thread_id, bool local_transaction, const gr::Gtid_tsid &tsid, bool is_tsid_specified, rpl_sidno sidno, rpl_gno gno, enum_group_replication_consistency_level consistency_level, Members_list *members_that_must_prepare_the_transaction)
Constructor.
Definition: consistency_manager.cc:35
 
my_thread_id m_thread_id
Definition: consistency_manager.h:258
 
bool m_transaction_prepared_locally
Definition: consistency_manager.h:268
 
bool is_transaction_prepared_locally()
Is the transaction prepared locally?
Definition: consistency_manager.cc:85
 
const bool m_local_transaction
Definition: consistency_manager.h:259
 
std::string get_tsid_string() const
Return the string representation of UUID and tag.
Definition: consistency_manager.cc:255
 
const rpl_sidno m_sidno
Definition: consistency_manager.h:262
 
int handle_member_leave(const std::vector< Gcs_member_identifier > &leaving_members)
Call action after members leave the group.
Definition: consistency_manager.cc:225
 
const enum_group_replication_consistency_level m_consistency_level
Definition: consistency_manager.h:264
 
int handle_remote_prepare(const Gcs_member_identifier &gcs_member_id)
Call action after this transaction being prepared by other member.
Definition: consistency_manager.cc:179
 
const rpl_gno m_gno
Definition: consistency_manager.h:263
 
int after_applier_prepare(my_thread_id thread_id, Group_member_info::Group_member_status member_status)
Call action after this transaction being prepared on this member applier.
Definition: consistency_manager.cc:111
 
virtual ~Transaction_consistency_info()
Definition: consistency_manager.cc:73
 
std::unique_ptr< Checkable_rwlock > m_members_that_must_prepare_the_transaction_lock
Definition: consistency_manager.h:267
 
bool m_transaction_prepared_remotely
Definition: consistency_manager.h:269
 
enum_group_replication_consistency_level get_consistency_level()
Get the transaction consistency.
Definition: consistency_manager.cc:94
 
const bool m_tsid_specified
Definition: consistency_manager.h:260
 
bool is_the_transaction_prepared_remotely()
Did all other ONLINE members already prepared the transaction?
Definition: consistency_manager.cc:104
 
rpl_gno get_gno()
Get the transaction gno.
Definition: consistency_manager.cc:91
 
my_thread_id get_thread_id()
Get the thread id that is executing the transaction.
Definition: consistency_manager.cc:77
 
rpl_sidno get_sidno()
Get the transaction sidno.
Definition: consistency_manager.cc:89
 
bool is_a_single_member_group()
Is this transaction running on a single member group?
Definition: consistency_manager.cc:98
 
bool is_local_transaction()
Is the transaction from this server?
Definition: consistency_manager.cc:81
 
uint64_t get_begin_timestamp() const
Return the time at which the wait for the transaction prepare acknowledge from others members did sta...
Definition: consistency_manager.cc:251
 
Members_list * m_members_that_must_prepare_the_transaction
Definition: consistency_manager.h:265
 
The consistency information of all ongoing transactions which have consistency GROUP_REPLICATION_CONS...
Definition: consistency_manager.h:294
 
Hold_transactions m_hold_transactions
Hold transaction mechanism.
Definition: consistency_manager.h:575
 
int after_applier_prepare(rpl_sidno sidno, rpl_gno gno, my_thread_id thread_id, Group_member_info::Group_member_status member_status)
Call action after a transaction being prepared on this member applier.
Definition: consistency_manager.cc:388
 
int after_certification(std::unique_ptr< Transaction_consistency_info > transaction_info)
Call action after a transaction is certified.
Definition: consistency_manager.cc:316
 
int before_transaction_begin(my_thread_id thread_id, ulong gr_consistency_level, ulong timeout, enum_rpl_channel_type rpl_channel_type, const THD *thd) override
Call action before a transaction starts.
Definition: consistency_manager.cc:636
 
int transaction_begin_sync_prepared_transactions(my_thread_id thread_id, ulong timeout)
Help method called by transaction begin action that, if there are precedent prepared transactions wit...
Definition: consistency_manager.cc:787
 
Checkable_rwlock * m_prepared_transactions_on_my_applier_lock
Definition: consistency_manager.h:559
 
bool has_local_prepared_transactions()
Are there local prepared transactions waiting for prepare acknowledge from other members?
Definition: consistency_manager.cc:853
 
Transaction_consistency_manager_map m_map
Definition: consistency_manager.h:557
 
int transaction_begin_sync_before_execution(my_thread_id thread_id, enum_group_replication_consistency_level consistency_level, ulong timeout, const THD *thd) const
Help method called by transaction begin action that, for transactions with consistency GROUP_REPLICAT...
Definition: consistency_manager.cc:688
 
void disable_primary_election_checks()
Tells the consistency manager that a primary election ended so it shall disable primary election chec...
Definition: consistency_manager.cc:955
 
int handle_sync_before_execution_message(my_thread_id thread_id, const Gcs_member_identifier &gcs_member_id) const
Call action once a Sync_before_execution_message is received, this will allow fetch the group transac...
Definition: consistency_manager.cc:768
 
int handle_member_leave(const std::vector< Gcs_member_identifier > &leaving_members)
Call action after members leave the group.
Definition: consistency_manager.cc:592
 
void register_transaction_observer()
Register an observer for transactions.
Definition: consistency_manager.cc:942
 
int remove_prepared_transaction(Transaction_consistency_manager_key key)
Help method that cleans prepared transactions and releases transactions waiting on them.
Definition: consistency_manager.cc:887
 
~Transaction_consistency_manager() override
Definition: consistency_manager.cc:288
 
void plugin_is_stopping()
Inform that plugin is stopping.
Definition: consistency_manager.cc:938
 
std::list< Transaction_consistency_manager_pevent_pair, Malloc_allocator< Transaction_consistency_manager_pevent_pair > > m_delayed_view_change_events
Definition: consistency_manager.h:568
 
std::list< my_thread_id, Malloc_allocator< my_thread_id > > m_new_transactions_waiting
Definition: consistency_manager.h:565
 
std::list< Transaction_consistency_manager_key, Malloc_allocator< Transaction_consistency_manager_key > > m_prepared_transactions_on_my_applier
Definition: consistency_manager.h:563
 
Transaction_consistency_manager_key m_last_local_transaction
Definition: consistency_manager.h:569
 
void unregister_transaction_observer()
Unregister the observer for transactions.
Definition: consistency_manager.cc:946
 
int after_rollback(my_thread_id thread_id) override
Executed after rollback.
Definition: consistency_manager.cc:974
 
void clear()
Clear all information.
Definition: consistency_manager.cc:297
 
int handle_remote_prepare(const gr::Gtid_tsid &tsid, bool is_tsid_specified, rpl_gno gno, const Gcs_member_identifier &gcs_member_id)
Call action after a transaction being prepared by other member.
Definition: consistency_manager.cc:476
 
int before_rollback(my_thread_id thread_id, Group_transaction_listener::enum_transaction_origin origin) override
Executed before rollback.
Definition: consistency_manager.cc:969
 
std::atomic< bool > m_plugin_stopping
Definition: consistency_manager.h:571
 
int after_commit(my_thread_id thread_id, rpl_sidno sidno, rpl_gno gno) override
Call action after commit a transaction on this member.
Definition: consistency_manager.cc:617
 
Checkable_rwlock * m_map_lock
Definition: consistency_manager.h:556
 
std::atomic< bool > m_primary_election_active
Definition: consistency_manager.h:572
 
int schedule_view_change_event(Pipeline_event *pevent)
Schedule a View_change_log_event log into the relay to after the local prepared transactions are comp...
Definition: consistency_manager.cc:874
 
Transaction_consistency_manager()
Constructor.
Definition: consistency_manager.cc:260
 
void enable_primary_election_checks()
Tells the consistency manager that a primary election is running so it shall enable primary election ...
Definition: consistency_manager.cc:950
 
int before_commit(my_thread_id thread_id, Group_transaction_listener::enum_transaction_origin origin) override
Executed before commit.
Definition: consistency_manager.cc:964
 
void plugin_started()
Inform that plugin did start.
Definition: consistency_manager.cc:934
 
Represents Transaction Source Identifier which is composed of source UUID and transaction tag.
Definition: tsid.h:47
 
std::pair< Pipeline_event *, Transaction_consistency_manager_key > Transaction_consistency_manager_pevent_pair
Definition: consistency_manager.h:278
 
std::pair< rpl_sidno, rpl_gno > Transaction_consistency_manager_key
Definition: consistency_manager.h:273
 
std::map< Transaction_consistency_manager_key, Transaction_consistency_info_uptr, std::less< Transaction_consistency_manager_key >, Malloc_allocator< std::pair< const Transaction_consistency_manager_key, Transaction_consistency_info_uptr > > > Transaction_consistency_manager_map
Definition: consistency_manager.h:284
 
std::unique_ptr< Transaction_consistency_info > Transaction_consistency_info_uptr
Definition: consistency_manager.h:47
 
std::pair< Transaction_consistency_manager_key, Transaction_consistency_info_uptr > Transaction_consistency_manager_pair
Definition: consistency_manager.h:276
 
#define MY_WME
Definition: my_sys.h:128
 
#define MYF(v)
Definition: my_inttypes.h:97
 
void * my_malloc(PSI_memory_key key, size_t size, int flags)
Allocates size bytes of memory.
Definition: my_memory.cc:57
 
void my_free(void *ptr)
Frees the memory pointed by the ptr.
Definition: my_memory.cc:81
 
static my_thread_id thread_id
Definition: my_thr_init.cc:63
 
uint32 my_thread_id
Definition: my_thread_local.h:34
 
static bool timeout(bool(*wait_condition)())
Timeout function.
Definition: log0meb.cc:498
 
size_t size(const char *const c)
Definition: base64.h:46
 
std::map< Key, Value, Compare, ut::allocator< std::pair< const Key, Value > > > map
Specialization of map which uses ut_allocator.
Definition: ut0new.h:2897
 
std::list< T, ut::allocator< T > > list
Specialization of list which uses ut_allocator.
Definition: ut0new.h:2883
 
std::list< Gcs_member_identifier, Malloc_allocator< Gcs_member_identifier > > Members_list
Definition: pipeline_interfaces.h:40
 
API for Group Replication plugin.
 
enum_group_replication_consistency_level
Definition: plugin_group_replication.h:35
 
PSI_memory_key key_consistent_transactions
Definition: plugin_psi.h:247
 
required string key
Definition: replication_asynchronous_connection_failover.proto:60
 
enum_rpl_channel_type
Type of replication channel thread/transaction might be associated to.
Definition: rpl_context.h:50
 
mysql::gtid::gno_t rpl_gno
GNO, the second (numeric) component of a GTID, is an alias of mysql::gtid::gno_t.
Definition: rpl_gtid.h:112
 
cs::index::rpl_sidno rpl_sidno
Type of SIDNO (source ID number, first component of GTID)
Definition: rpl_gtid.h:108