MySQL 9.1.0
Source Code Documentation
consistency_manager.h
Go to the documentation of this file.
1/* Copyright (c) 2018, 2024, Oracle and/or its affiliates.
2
3 This program is free software; you can redistribute it and/or modify
4 it under the terms of the GNU General Public License, version 2.0,
5 as published by the Free Software Foundation.
6
7 This program is designed to work with certain software (including
8 but not limited to OpenSSL) that is licensed under separate terms,
9 as designated in a particular file or component or in included license
10 documentation. The authors of MySQL hereby grant you an additional
11 permission to link the program and your derivative works with the
12 separately licensed software that they have either included with
13 the program or referenced in the documentation.
14
15 This program is distributed in the hope that it will be useful,
16 but WITHOUT ANY WARRANTY; without even the implied warranty of
17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 GNU General Public License, version 2.0, for more details.
19
20 You should have received a copy of the GNU General Public License
21 along with this program; if not, write to the Free Software
22 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
23
24#ifndef CONSISTENCY_MANAGER_INCLUDED
25#define CONSISTENCY_MANAGER_INCLUDED
26
27#define CONSISTENCY_INFO_OUTCOME_OK 0
28#define CONSISTENCY_INFO_OUTCOME_ERROR 1
29#define CONSISTENCY_INFO_OUTCOME_COMMIT 2
30
33#include <atomic>
34#include <list>
35#include <map>
36#include <memory>
37#include <utility>
38
44
47 std::unique_ptr<Transaction_consistency_info>;
48
49/**
50 @class Transaction_consistency_info
51
52 The consistency information of a transaction, including its
53 configuration and state.
54*/
56 public:
57 /*
58 Allocate memory on the heap with instrumented memory allocation, so
59 that memory consumption can be tracked.
60
61 @param[in] size memory size to be allocated
62 @param[in] nothrow When the nothrow constant is passed as second parameter
63 to operator new, operator new returns a null-pointer on
64 failure instead of throwing a bad_alloc exception.
65
66 @return pointer to the allocated memory, or NULL if memory could not
67 be allocated.
68 */
69 void *operator new(size_t size, const std::nothrow_t &) noexcept {
70 /*
71 Call my_malloc() with the MY_WME flag to make sure that it will
72 write an error message if the memory could not be allocated.
73 */
75 }
76
77 /*
78 Deallocate memory on the heap with instrumented memory allocation, so
79 that memory consumption can be tracked.
80
81 @param[in] ptr pointer to the allocated memory
82 @param[in] nothrow When the nothrow constant is passed as second parameter
83 to operator new, operator new returns a null-pointer on
84 failure instead of throwing a bad_alloc exception.
85 */
86 void operator delete(void *ptr, const std::nothrow_t &) noexcept {
87 my_free(ptr);
88 }
89
90 /**
91 Allocate memory on the heap with instrumented memory allocation, so
92 that memory consumption can be tracked.
93
94 @param[in] size memory size to be allocated
95
96 @return pointer to the allocated memory, or NULL if memory could not
97 be allocated.
98 */
99 void *operator new(size_t size) noexcept {
100 /*
101 Call my_malloc() with the MY_WME flag to make sure that it will
102 write an error message if the memory could not be allocated.
103 */
105 }
106
107 /**
108 Deallocate memory on the heap with instrumented memory allocation, so
109 that memory consumption can be tracked.
110
111 @param[in] ptr pointer to the allocated memory
112 */
113 void operator delete(void *ptr) noexcept { my_free(ptr); }
114
115 /**
116 Constructor
117
118 @param[in] thread_id the thread that is executing the transaction
119 @param[in] local_transaction true if this transaction did originate from
120 this server
121 @param[in] tsid transaction tsid
122 @param[in] is_tsid_specified information on whether tsid is specified
123 @param[in] sidno transaction sidno
124 @param[in] gno transaction gno
125 @param[in] consistency_level the transaction consistency
126 @param[in] members_that_must_prepare_the_transaction
127 list of the members that must prepare the
128 transaction before it is allowed to commit
129 */
131 my_thread_id thread_id, bool local_transaction, const gr::Gtid_tsid &tsid,
132 bool is_tsid_specified, rpl_sidno sidno, rpl_gno gno,
134 Members_list *members_that_must_prepare_the_transaction);
135
137
138 /**
139 Get the thread id that is executing the transaction.
140
141 @return the thread id
142 */
144
145 /**
146 Is the transaction from this server?
147
148 @return true yes
149 false otherwise
150 */
152
153 /**
154 Is the transaction prepared locally?
155
156 @return true yes
157 false otherwise
158 */
160
161 /**
162 Get the transaction sidno.
163
164 @return the sidno
165 */
167
168 /**
169 Get the transaction gno.
170
171 @return the gno
172 */
174
175 /**
176 Get the transaction consistency.
177
178 @return the consistency
179 */
181
182 /**
183 Is this transaction running on a single member group?
184
185 @return true yes
186 false otherwise
187 */
189
190 /**
191 Did all other ONLINE members already prepared the transaction?
192
193 @return true yes
194 false otherwise
195 */
197
198 /**
199 Call action after this transaction being prepared on this member
200 applier.
201
202 @param[in] thread_id the applier thread id
203 @param[in] member_status this member status
204
205 @return Operation status
206 @retval 0 OK
207 @retval !=0 error
208 */
212
213 /**
214 Call action after this transaction being prepared by other member.
215
216 @param[in] gcs_member_id the member id
217
218 @return Operation status
219 @retval CONSISTENCY_INFO_OUTCOME_OK OK
220 @retval CONSISTENCY_INFO_OUTCOME_ERROR error
221 @retval CONSISTENCY_INFO_OUTCOME_COMMIT transaction must proceeded to
222 commit
223 */
224 int handle_remote_prepare(const Gcs_member_identifier &gcs_member_id);
225
226 /**
227 Call action after members leave the group.
228 If any of these members are on the prepare wait list, they will
229 be removed. If the lists becomes empty, the transaction will proceed
230 to commit.
231
232 @param[in] leaving_members the members that left
233
234 @return Operation status
235 @retval 0 OK
236 @retval !=0 error
237 */
239 const std::vector<Gcs_member_identifier> &leaving_members);
240
241 /**
242 Return the time at which the wait for the transaction prepare
243 acknowledge from others members did start.
244 @see Metrics_handler::get_current_time()
245
246 @return the wait for remote transaction acknowledge begin time.
247 */
248 uint64_t get_begin_timestamp() const;
249
250 /**
251 Return the string representation of UUID and tag.
252
253 @return the string representation of UUID and tag.
254 */
255 std::string get_tsid_string() const;
256
257 private:
266 std::unique_ptr<Checkable_rwlock>
270 const uint64_t m_begin_timestamp;
271};
272
273typedef std::pair<rpl_sidno, rpl_gno> Transaction_consistency_manager_key;
277typedef std::pair<Pipeline_event *, Transaction_consistency_manager_key>
279typedef std::map<
281 std::less<Transaction_consistency_manager_key>,
285
286/**
287 @class Transaction_consistency_manager
288
289 The consistency information of all ongoing transactions which have
290 consistency GROUP_REPLICATION_CONSISTENCY_BEFORE,
291 GROUP_REPLICATION_CONSISTENCY_AFTER or
292 GROUP_REPLICATION_CONSISTENCY_BEFORE_AND_AFTER.
293*/
295 public:
296 /**
297 Constructor.
298 */
300
302
303 /**
304 Clear all information.
305 */
306 void clear();
307
308 /**
309 Call action after a transaction is certified.
310 The transaction coordination among the members will start on
311 this point.
312
313 @param[in] transaction_info the transaction info
314
315 @return Operation status
316 @retval 0 OK
317 @retval !=0 error
318 */
320 std::unique_ptr<Transaction_consistency_info> transaction_info);
321
322 /**
323 Call action after a transaction being prepared on this member
324 applier.
325
326 @param[in] sidno the transaction sidno
327 @param[in] gno the transaction gno
328 @param[in] thread_id the applier thread id
329 @param[in] member_status this member status
330
331 @return Operation status
332 @retval 0 OK
333 @retval !=0 error
334 */
338
339 /**
340 Call action after a transaction being prepared by other member.
341
342 If this sid is NULL that means this transaction sid is the group
343 name.
344
345 @param[in] tsid the transaction tsid
346 @param[in] is_tsid_specified information on whether tsid is specified
347 @param[in] gno the transaction gno
348 @param[in] gcs_member_id the member id
349
350 @return Operation status
351 @retval 0 OK
352 @retval !=0 error
353 */
354 int handle_remote_prepare(const gr::Gtid_tsid &tsid, bool is_tsid_specified,
355 rpl_gno gno,
356 const Gcs_member_identifier &gcs_member_id);
357
358 /**
359 Call action after members leave the group.
360 If any of these members are on the prepare wait lists, they will
361 be removed. If any those lists become empty, those transactions
362 proceed to commit.
363
364 @param[in] leaving_members the members that left
365
366 @return Operation status
367 @retval 0 OK
368 @retval !=0 error
369 */
371 const std::vector<Gcs_member_identifier> &leaving_members);
372
373 /**
374 Call action after commit a transaction on this member.
375 If new transactions are waiting for this prepared transaction
376 to be committed, they will be released.
377
378 @param[in] thread_id the transaction thread id
379 @param[in] sidno the transaction sidno
380 @param[in] gno the transaction gno
381
382 @return Operation status
383 @retval 0 OK
384 @retval !=0 error
385 */
387 rpl_gno gno) override;
388
389 /**
390 Call action before a transaction starts.
391 It will handle transactions with
392 GROUP_REPLICATION_CONSISTENCY_BEFORE consistency and any others
393 that need to wait for preceding prepared transactions to
394 commit.
395
396 @param[in] thread_id the thread that is executing the
397 transaction
398 @param[in] gr_consistency_level the transaction consistency
399 @param[in] timeout maximum time to wait
400 @param[in] rpl_channel_type type of the channel that receives the
401 transaction
402 @param[in] thd server thd represent client connection
403
404 @return Operation status
405 @retval 0 OK
406 @retval !=0 error
407 */
409 ulong gr_consistency_level, ulong timeout,
410 enum_rpl_channel_type rpl_channel_type,
411 const THD *thd) override;
412
413 /**
414 Call action once a Sync_before_execution_message is received,
415 this will allow fetch the group transactions set ordered with
416 the message order.
417
418 @param[in] thread_id the thread that is executing the
419 transaction
420 @param[in] gcs_member_id the member id
421
422 @return Operation status
423 @retval 0 OK
424 @retval !=0 error
425 */
427 my_thread_id thread_id, const Gcs_member_identifier &gcs_member_id) const;
428
429 /**
430 Are there local prepared transactions waiting for prepare
431 acknowledge from other members?
432
433 @return true yes
434 false otherwise
435 */
437
438 /**
439 Schedule a View_change_log_event log into the relay to after
440 the local prepared transactions are complete, since those
441 transactions belong to the previous view and as such must be
442 logged before this view.
443
444 @param[in] pevent the pipeline event that contains
445 the View_change_log_event
446
447 @return Operation status
448 @retval 0 OK
449 @retval !=0 error
450 */
452
453 /**
454 Inform that plugin did start.
455 */
456 void plugin_started();
457
458 /**
459 Inform that plugin is stopping.
460 New consistent transactions are not allowed to start.
461 On after_applier_prepare the transactions do not wait
462 for other prepares.
463 */
464 void plugin_is_stopping();
465
466 /**
467 Register an observer for transactions
468 */
470
471 /**
472 Unregister the observer for transactions
473 */
475
476 int before_commit(
479
480 int before_rollback(
483
485
486 /**
487 Tells the consistency manager that a primary election is running so it
488 shall enable primary election checks
489 */
491
492 /**
493 Tells the consistency manager that a primary election ended so it
494 shall disable primary election checks
495 */
497
498 private:
499 /**
500 Help method called by transaction begin action that, for
501 transactions with consistency GROUP_REPLICATION_CONSISTENCY_BEFORE
502 or GROUP_REPLICATION_CONSISTENCY_BEFORE_AND_AFTER will:
503 1) send a message to all members;
504 2) when that message is received and processed in-order,
505 w.r.t. the message stream, will fetch the Group Replication
506 applier RECEIVED_TRANSACTION_SET, the set of remote
507 transactions that were allowed to commit;
508 3) wait until all the transactions on Group Replication applier
509 RECEIVED_TRANSACTION_SET are committed.
510
511 @param[in] thread_id the thread that is executing the
512 transaction
513 @param[in] consistency_level the transaction consistency
514 @param[in] timeout maximum time to wait
515 @param[in] thd server thd represent client connection
516
517 @return Operation status
518 @retval 0 OK
519 @retval !=0 error
520 */
523 enum_group_replication_consistency_level consistency_level, ulong timeout,
524 const THD *thd) const;
525
526 /**
527 Help method called by transaction begin action that, if there are
528 precedent prepared transactions with consistency
529 GROUP_REPLICATION_CONSISTENCY_AFTER or
530 GROUP_REPLICATION_CONSISTENCY_BEFORE_AND_AFTER, will hold the
531 this transaction until the prepared are committed.
532
533 @param[in] thread_id the thread that is executing the
534 transaction
535 @param[in] timeout maximum time to wait
536
537 @return Operation status
538 @retval 0 OK
539 @retval !=0 error
540 */
542 ulong timeout);
543
544 /**
545 Help method that cleans prepared transactions and releases
546 transactions waiting on them.
547
548 @param[in] key the transaction key
549
550 @return Operation status
551 @retval 0 OK
552 @retval !=0 error
553 */
555
558
560
564 std::list<my_thread_id, Malloc_allocator<my_thread_id>>
570
571 std::atomic<bool> m_plugin_stopping;
572 std::atomic<bool> m_primary_election_active;
573
574 /** Hold transaction mechanism */
576};
577
578#endif /* CONSISTENCY_MANAGER_INCLUDED */
This has the functionality of mysql_rwlock_t, with two differences:
Definition: rpl_gtid.h:325
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:44
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:130
#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:2894
std::list< T, ut::allocator< T > > list
Specialization of list which uses ut_allocator.
Definition: ut0new.h:2880
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:113
cs::index::rpl_sidno rpl_sidno
Type of SIDNO (source ID number, first component of GTID)
Definition: rpl_gtid.h:109