MySQL 8.0.39
Source Code Documentation
recovery_state_transfer.h
Go to the documentation of this file.
1/* Copyright (c) 2015, 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 RECOVERY_STATE_TRANSFER_INCLUDE
25#define RECOVERY_STATE_TRANSFER_INCLUDE
26
28#include <string>
29#include <vector>
30
31#include "compression.h"
32#include "my_io.h"
37
40 STATE_TRANSFER_STOP, // Fail to stop replica threads
41 STATE_TRANSFER_PURGE, // Fail to purge replica threads
42 STATE_TRANSFER_NO_CONNECTION // No connection to donor
44
46 public:
47 /**
48 Recovery state transfer constructor
49 @param recovery_channel_name The channel name to be used
50 @param member_uuid This member uuid
51 @param channel_obsr_mngr The channel state observer manager
52 */
54 const std::string &member_uuid,
55 Channel_observation_manager *channel_obsr_mngr);
56
58
59 // Base methods: init / abort / end
60
61 /**
62 Initialize the state transfer class and reset the class flags
63
64 @param rec_view_id The view id to use on this round
65 */
66 void initialize(const std::string &rec_view_id);
67
68 /** Abort the state transfer */
70
71 /**
72 Signals that the data was received so the process can end.
73 */
74 void end_state_transfer();
75
76 // Methods for variable updates
77
78 /** Sets the number of times recovery tries to connect to a given donor */
79 void set_recovery_donor_retry_count(ulong retry_count) {
81 }
82
83 /** Sets the sleep time between connection attempts to all possible donors */
84 void set_recovery_donor_reconnect_interval(ulong reconnect_interval) {
85 donor_reconnect_interval = reconnect_interval;
86 }
87
88 /**
89 Sets all the SSL option to use on recovery.
90
91 @param use_ssl force the use of SSL on recovery connections
92 @param ssl_ca SSL trusted certificate authorities file
93 @param ssl_capath a directory with trusted CA files
94 @param ssl_cert the certificate file for secure connections
95 @param ssl_cipher the list of ciphers to use
96 @param ssl_key the SSL key file
97 @param ssl_crl SSL revocation list file
98 @param ssl_crlpath path with revocation list files
99 @param ssl_verify_server_cert verify the hostname against the certificate
100 @param tls_version the list of TLS versions to use
101 @param tls_ciphersuites the list of TLS ciphersuites to use
102 */
103 void set_recovery_ssl_options(bool use_ssl, const char *ssl_ca,
104 const char *ssl_capath, const char *ssl_cert,
105 const char *ssl_cipher, const char *ssl_key,
106 const char *ssl_crl, const char *ssl_crlpath,
107 bool ssl_verify_server_cert, char *tls_version,
108 char *tls_ciphersuites) {
109 recovery_use_ssl = use_ssl;
110 if (ssl_ca != nullptr) set_recovery_ssl_ca(ssl_ca);
111 if (ssl_capath != nullptr) set_recovery_ssl_capath(ssl_capath);
112 if (ssl_cert != nullptr) set_recovery_ssl_cert(ssl_cert);
113 if (ssl_cipher != nullptr) set_recovery_ssl_cipher(ssl_cipher);
114 if (ssl_key != nullptr) set_recovery_ssl_key(ssl_key);
115 if (ssl_crl != nullptr) set_recovery_ssl_crl(ssl_crl);
116 if (ssl_crlpath != nullptr) set_recovery_ssl_crl(ssl_crlpath);
118 if (tls_version != nullptr) set_recovery_tls_version(tls_version);
119 set_recovery_tls_ciphersuites(tls_ciphersuites);
120 }
121
122 /** Set the option that forces the use of SSL on recovery connections */
123 void set_recovery_use_ssl(char use_ssl) { this->recovery_use_ssl = use_ssl; }
124
125 /** Set a SSL trusted certificate authorities file */
126 void set_recovery_ssl_ca(const char *ssl_ca) {
127 memcpy(recovery_ssl_ca, ssl_ca, strlen(ssl_ca) + 1);
128 }
129
130 /** Set a folder with SSL trusted CA files */
131 void set_recovery_ssl_capath(const char *ssl_capath) {
132 memcpy(recovery_ssl_capath, ssl_capath, strlen(ssl_capath) + 1);
133 }
134
135 /** Set a SSL certificate for connection */
136 void set_recovery_ssl_cert(const char *ssl_cert) {
137 memcpy(recovery_ssl_cert, ssl_cert, strlen(ssl_cert) + 1);
138 }
139
140 /** Set a SSL ciphers to be used */
141 void set_recovery_ssl_cipher(const char *ssl_cipher) {
142 memcpy(recovery_ssl_cipher, ssl_cipher, strlen(ssl_cipher) + 1);
143 }
144
145 /** Set a SSL key for connections */
146 void set_recovery_ssl_key(const char *ssl_key) {
147 memcpy(recovery_ssl_key, ssl_key, strlen(ssl_key) + 1);
148 }
149
150 /** Set a SSL revocation list file*/
151 void set_recovery_ssl_crl(const char *ssl_crl) {
152 memcpy(recovery_ssl_crl, ssl_crl, strlen(ssl_crl) + 1);
153 }
154
155 /** Set a folder with SSL revocation list files*/
156 void set_recovery_ssl_crlpath(const char *ssl_crlpath) {
157 memcpy(recovery_ssl_crlpath, ssl_crlpath, strlen(ssl_crlpath) + 1);
158 }
159
160 /** Set if recovery shall compare the used hostname against the certificate */
163 }
164
165 /** Set a TLS versions to be used */
166 void set_recovery_tls_version(const char *tls_version) {
167 memcpy(recovery_tls_version, tls_version, strlen(tls_version) + 1);
168 }
169
170 /** Set a TLS ciphersuites to be used */
171 void set_recovery_tls_ciphersuites(const char *tls_ciphersuites) {
172 if (nullptr == tls_ciphersuites) {
174 } else {
176 memcpy(recovery_tls_ciphersuites, tls_ciphersuites,
177 strlen(tls_ciphersuites) + 1);
178 }
179 }
180
181 /**
182 @return Is recovery configured to use SSL
183 */
184 bool get_recovery_use_ssl() { return this->recovery_use_ssl; }
185
186 /**
187 Get SSL options configured for recovery
188
189 @param[out] ssl_ca the ssl ca
190 @param[out] ssl_cert the ssl cert
191 @param[out] ssl_key the ssl key
192 */
193 void get_recovery_base_ssl_options(std::string *ssl_ca, std::string *ssl_cert,
194 std::string *ssl_key) {
195 ssl_ca->assign(recovery_ssl_ca);
196 ssl_cert->assign(recovery_ssl_cert);
197 ssl_key->assign(recovery_ssl_key);
198 }
199
200 /**
201 Sets the recovery shutdown timeout.
202
203 @param[in] timeout the timeout
204 */
207 }
208
209 /** Set a public key file*/
210 void set_recovery_public_key_path(const char *public_key_path) {
211 if (public_key_path != nullptr) {
212 memcpy(recovery_public_key_path, public_key_path,
213 strlen(public_key_path) + 1);
214 }
215 }
216
217 /** Get preference to get public key */
219
220 /** Set compression algorithm */
222 memcpy(recovery_compression_algorithm, name, strlen(name) + 1);
223 }
224
225 /** Set compression level */
228 }
229
230 // Methods that update the state transfer process
231
232 /** This method initializes the group membership info */
234
235 /**
236 This method decides what action to take when a member exits the group.
237 If the donor left, and the state transfer is still ongoing, then pick a
238 new one and restart the transfer.
239
240 @param did_members_left states if members left the view
241
242 @return the operation status
243 @retval 0 OK
244 @retval !=0 Error
245 */
246 int update_recovery_process(bool did_members_left);
247
248 /**
249 Method that informs recovery that the donor channel applier was stopped.
250
251 @param thread_id the applier thread id
252 @param aborted if the applier was aborted or stopped
253 */
255
256 /**
257 Method that informs recovery that the donor channel receiver was stopped.
258
259 @param thread_id the applier thread id
260 */
262
263 // Status methods
264
265 /**
266 Checks if the given id matches the recovery applier thread
267 @param id the thread id
268
269 @return if it belongs to a thread
270 @retval true the id matches a SQL or worker thread
271 @retval false the id doesn't match any thread
272 */
274
275 /**
276 Checks to see if the recovery IO/SQL thread is still running, probably caused
277 by an timeout on shutdown.
278 If the threads are still running, we try to stop them again.
279 If not possible, an error is reported.
280
281 @return are the threads stopped
282 @retval 0 All is stopped.
283 @retval !=0 Threads are still running
284 */
286
287 // class core method
288
289 /**
290 Execute state transfer
291 @param stage_handler Stage handler to update the system tables
292
293 @return the operation status
294 @retval 0 OK
295 @retval !=0 Recovery state transfer failed
296 */
298 Plugin_stage_monitor_handler &stage_handler);
299
300 private:
301 /**
302 Removes the old list of group members and enquires about the current members
303
304 @param[in] update_donor update the selected donor pointer when updating
305 */
306 void update_group_membership(bool update_donor);
307
308 /**
309 Based on the group list, build a random order list with all suitable donors.
310
311 @param selected_donor the current selected donor to update its pointer
312 */
313 void build_donor_list(std::string *selected_donor);
314
315 /** Method that sets the failover status to true and awakes recovery */
316 void donor_failover();
317
318 /**
319 Establish a master/slave connection to the selected donor.
320
321 @return the operation status
322 @retval 0 OK
323 @retval !=0 Error
324 */
326
327 /**
328 Initializes the structures for the donor connection threads.
329 Recovery channel is always purged.
330
331 @param hostname hostname of current selected donor
332 @param port port of current selected donor
333
334 @return the operation status
335 @retval 0 OK
336 @retval !=0 Error
337 */
338 int initialize_donor_connection(std::string hostname, uint port);
339
340 /**
341 Initializes the connection parameters for the donor connection.
342
343 @retval false Everything OK
344 @retval true In case of the selected donor is not available
345 */
347
348 /**
349 Starts the recovery slave threads to receive data from the donor.
350
351 @return the operation status
352 @retval 0 OK
353 @retval !=0 Error
354 */
356
357 /**
358 Terminates the connection to the donor
359
360 @param purge_logs purge recovery logs
361
362 @return the operation status
363 @retval STATE_TRANSFER_OK OK
364 @retval !=STATE_TRANSFER_OK Error
365 */
367 bool purge_logs = true);
368
369 /**
370 Purges relay logs and the master info object
371
372 @return the operation status
373 @retval 0 OK
374 @retval REPLICATION_THREAD_REPOSITORY_RL_PURGE_ERROR
375 Error when purging the relay logs
376 @retval REPLICATION_THREAD_REPOSITORY_MI_PURGE_ERROR
377 Error when cleaning the master info repository
378 */
380
381 private:
382 /* The member uuid*/
383 std::string member_uuid;
384 /* The associated view id for the current recovery session */
385 std::string view_id;
386
387 /* The selected donor member*/
389 /* The selected donor member hostname */
391 /* Vector with group members info*/
393 /* Member with suitable donors for use on recovery*/
395
396 /* Retry count on donor connections*/
398
399 /* Recovery abort flag */
401 /* Flag that signals when the donor transferred all its data */
403 /* Are we successfully connected to a donor*/
405 /* Are we on failover mode*/
407 /* Did an error happened in one of the threads*/
409
410 // Recovery connection related structures
411
412 /** Interface class to interact with the donor connection threads*/
414
415 /* The plugin's control module for channel status observation */
417
418 /* The recovery channel state observer */
420
421 /** If the use of SSL is obligatory on recovery connections */
423 /** Get public key */
425 /** The configured SSL trusted certificate authorities file */
427 /** The configured directory that contains trusted SSL CA files*/
429 /** The configured SSL certificate file to use for a secure connection*/
431 /** The configured SSL list of permissible ciphers to use for encryption.*/
433 /** The configured SSL key file to use for establishing a secure connection.*/
435 /** The configured SSL file containing certificate revocation lists*/
437 /** The configured directory that contains certificate revocation list files*/
439 /** If the server's Common Name value checks against donor sent certificate.*/
441 /** Public key information */
443 /** Permitted TLS versions. */
445 /** Permitted TLS 1.3 ciphersuites. */
448
449 /* The lock for the recovery wait condition */
451 /* The condition for the recovery wait */
454
455 /* Recovery max number of retries due to failures*/
457 /* Sleep time between connection attempts to all possible donors*/
459 /* compression algorithm to be used for communication */
461 /* compression level to be used for compression */
463};
464#endif /* RECOVERY_INCLUDE */
A class to register observers for channel state events.
Definition: channel_observation_manager.h:131
A interface class to code channel state response methods.
Definition: channel_observation_manager.h:38
Definition: member_info.h:81
Definition: stage_monitor_handler.h:30
Definition: recovery_state_transfer.h:45
char recovery_tls_ciphersuites[FN_REFLEN]
Definition: recovery_state_transfer.h:447
bool recovery_tls_ciphersuites_null
Permitted TLS 1.3 ciphersuites.
Definition: recovery_state_transfer.h:446
void set_recovery_donor_reconnect_interval(ulong reconnect_interval)
Sets the sleep time between connection attempts to all possible donors.
Definition: recovery_state_transfer.h:84
bool on_failover
Definition: recovery_state_transfer.h:406
void initialize(const std::string &rec_view_id)
Initialize the state transfer class and reset the class flags.
Definition: recovery_state_transfer.cc:101
void set_recovery_donor_retry_count(ulong retry_count)
Sets the number of times recovery tries to connect to a given donor.
Definition: recovery_state_transfer.h:79
bool recovery_get_public_key
Get public key.
Definition: recovery_state_transfer.h:424
int update_recovery_process(bool did_members_left)
This method decides what action to take when a member exits the group.
Definition: recovery_state_transfer.cc:217
void set_recovery_ssl_capath(const char *ssl_capath)
Set a folder with SSL trusted CA files.
Definition: recovery_state_transfer.h:131
~Recovery_state_transfer()
Definition: recovery_state_transfer.cc:84
Group_member_info_list * group_members
Definition: recovery_state_transfer.h:392
Group_member_info * selected_donor
Definition: recovery_state_transfer.h:388
mysql_cond_t recovery_condition
Definition: recovery_state_transfer.h:452
uint recovery_zstd_compression_level
Definition: recovery_state_transfer.h:462
State_transfer_status state_transfer(Plugin_stage_monitor_handler &stage_handler)
Execute state transfer.
Definition: recovery_state_transfer.cc:659
bool donor_channel_thread_error
Definition: recovery_state_transfer.h:408
long donor_reconnect_interval
Definition: recovery_state_transfer.h:458
void set_recovery_ssl_cipher(const char *ssl_cipher)
Set a SSL ciphers to be used.
Definition: recovery_state_transfer.h:141
Channel_observation_manager * channel_observation_manager
Definition: recovery_state_transfer.h:416
bool initialize_connection_parameters()
Initializes the connection parameters for the donor connection.
int establish_donor_connection()
Establish a master/slave connection to the selected donor.
Definition: recovery_state_transfer.cc:381
bool connected_to_donor
Definition: recovery_state_transfer.h:404
long max_connection_attempts_to_donors
Definition: recovery_state_transfer.h:456
Replication_thread_api donor_connection_interface
Interface class to interact with the donor connection threads.
Definition: recovery_state_transfer.h:413
State_transfer_status terminate_recovery_slave_threads(bool purge_logs=true)
Terminates the connection to the donor.
Definition: recovery_state_transfer.cc:611
char recovery_public_key_path[FN_REFLEN]
Public key information.
Definition: recovery_state_transfer.h:442
void set_recovery_tls_version(const char *tls_version)
Set a TLS versions to be used.
Definition: recovery_state_transfer.h:166
void set_recovery_ssl_ca(const char *ssl_ca)
Set a SSL trusted certificate authorities file.
Definition: recovery_state_transfer.h:126
void set_recovery_use_ssl(char use_ssl)
Set the option that forces the use of SSL on recovery connections.
Definition: recovery_state_transfer.h:123
int start_recovery_donor_threads()
Starts the recovery slave threads to receive data from the donor.
Definition: recovery_state_transfer.cc:536
char recovery_ssl_capath[FN_REFLEN]
The configured directory that contains trusted SSL CA files.
Definition: recovery_state_transfer.h:428
long donor_connection_retry_count
Definition: recovery_state_transfer.h:397
Recovery_state_transfer(char *recovery_channel_name, const std::string &member_uuid, Channel_observation_manager *channel_obsr_mngr)
Recovery state transfer constructor.
Definition: recovery_state_transfer.cc:41
void set_recovery_ssl_options(bool use_ssl, const char *ssl_ca, const char *ssl_capath, const char *ssl_cert, const char *ssl_cipher, const char *ssl_key, const char *ssl_crl, const char *ssl_crlpath, bool ssl_verify_server_cert, char *tls_version, char *tls_ciphersuites)
Sets all the SSL option to use on recovery.
Definition: recovery_state_transfer.h:103
char recovery_ssl_crl[FN_REFLEN]
The configured SSL file containing certificate revocation lists.
Definition: recovery_state_transfer.h:436
void donor_failover()
Method that sets the failover status to true and awakes recovery.
Definition: recovery_state_transfer.cc:298
int initialize_donor_connection(std::string hostname, uint port)
Initializes the structures for the donor connection threads.
Definition: recovery_state_transfer.cc:494
Channel_state_observer * recovery_channel_observer
Definition: recovery_state_transfer.h:419
void set_recovery_ssl_cert(const char *ssl_cert)
Set a SSL certificate for connection.
Definition: recovery_state_transfer.h:136
char recovery_ssl_cipher[FN_REFLEN]
The configured SSL list of permissible ciphers to use for encryption.
Definition: recovery_state_transfer.h:432
void set_recovery_tls_ciphersuites(const char *tls_ciphersuites)
Set a TLS ciphersuites to be used.
Definition: recovery_state_transfer.h:171
char recovery_ssl_crlpath[FN_REFLEN]
The configured directory that contains certificate revocation list files.
Definition: recovery_state_transfer.h:438
int check_recovery_thread_status()
Checks to see if the recovery IO/SQL thread is still running, probably caused by an timeout on shutdo...
Definition: recovery_state_transfer.cc:308
void inform_of_receiver_stop(my_thread_id thread_id)
Method that informs recovery that the donor channel receiver was stopped.
Definition: recovery_state_transfer.cc:145
bool is_own_event_channel(my_thread_id id)
Checks if the given id matches the recovery applier thread.
Definition: recovery_state_transfer.cc:319
void set_recovery_zstd_compression_level(uint level)
Set compression level.
Definition: recovery_state_transfer.h:226
void end_state_transfer()
Signals that the data was received so the process can end.
Definition: recovery_state_transfer.cc:289
char recovery_ssl_key[FN_REFLEN]
The configured SSL key file to use for establishing a secure connection.
Definition: recovery_state_transfer.h:434
void build_donor_list(std::string *selected_donor)
Based on the group list, build a random order list with all suitable donors.
Definition: recovery_state_transfer.cc:324
std::string member_uuid
Definition: recovery_state_transfer.h:383
char recovery_tls_version[FN_REFLEN]
Permitted TLS versions.
Definition: recovery_state_transfer.h:444
bool recovery_use_ssl
If the use of SSL is obligatory on recovery connections.
Definition: recovery_state_transfer.h:422
char recovery_ssl_ca[FN_REFLEN]
The configured SSL trusted certificate authorities file.
Definition: recovery_state_transfer.h:426
Group_member_info_list suitable_donors
Definition: recovery_state_transfer.h:394
void update_group_membership(bool update_donor)
Removes the old list of group members and enquires about the current members.
Definition: recovery_state_transfer.cc:179
bool recovery_aborted
Definition: recovery_state_transfer.h:400
void set_recovery_ssl_key(const char *ssl_key)
Set a SSL key for connections.
Definition: recovery_state_transfer.h:146
void set_recovery_ssl_crl(const char *ssl_crl)
Set a SSL revocation list file.
Definition: recovery_state_transfer.h:151
void set_recovery_get_public_key(bool set)
Get preference to get public key.
Definition: recovery_state_transfer.h:218
void initialize_group_info()
This method initializes the group membership info.
Definition: recovery_state_transfer.cc:167
bool get_recovery_use_ssl()
Definition: recovery_state_transfer.h:184
bool recovery_ssl_verify_server_cert
If the server's Common Name value checks against donor sent certificate.
Definition: recovery_state_transfer.h:440
std::string view_id
Definition: recovery_state_transfer.h:385
std::string selected_donor_hostname
Definition: recovery_state_transfer.h:390
void set_stop_wait_timeout(ulong timeout)
Sets the recovery shutdown timeout.
Definition: recovery_state_transfer.h:205
char recovery_compression_algorithm[COMPRESSION_ALGORITHM_NAME_LENGTH_MAX]
Definition: recovery_state_transfer.h:460
void set_recovery_public_key_path(const char *public_key_path)
Set a public key file.
Definition: recovery_state_transfer.h:210
mysql_mutex_t recovery_lock
Definition: recovery_state_transfer.h:450
bool donor_transfer_finished
Definition: recovery_state_transfer.h:402
void inform_of_applier_stop(my_thread_id thread_id, bool aborted)
Method that informs recovery that the donor channel applier was stopped.
Definition: recovery_state_transfer.cc:119
void set_recovery_ssl_crlpath(const char *ssl_crlpath)
Set a folder with SSL revocation list files.
Definition: recovery_state_transfer.h:156
void get_recovery_base_ssl_options(std::string *ssl_ca, std::string *ssl_cert, std::string *ssl_key)
Get SSL options configured for recovery.
Definition: recovery_state_transfer.h:193
void abort_state_transfer()
Abort the state transfer.
Definition: recovery_state_transfer.cc:207
void set_recovery_ssl_verify_server_cert(char ssl_verify_server_cert)
Set if recovery shall compare the used hostname against the certificate.
Definition: recovery_state_transfer.h:161
char recovery_ssl_cert[FN_REFLEN]
The configured SSL certificate file to use for a secure connection.
Definition: recovery_state_transfer.h:430
void set_recovery_compression_algorithm(const char *name)
Set compression algorithm.
Definition: recovery_state_transfer.h:221
int purge_recovery_slave_threads_repos()
Purges relay logs and the master info object.
Definition: recovery_state_transfer.cc:633
mysql_mutex_t donor_selection_lock
Definition: recovery_state_transfer.h:453
Definition: replication_threads_api.h:37
void set_stop_wait_timeout(ulong timeout)
Sets the threads shutdown timeout.
Definition: replication_threads_api.h:288
#define COMPRESSION_ALGORITHM_NAME_LENGTH_MAX
Definition: compression.h:40
std::vector< Group_member_info *, Malloc_allocator< Group_member_info * > > Group_member_info_list
Definition: member_info.h:735
Common #defines and includes for file and socket I/O.
#define FN_REFLEN
Definition: my_io.h:83
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:496
std::set< Key, Compare, ut::allocator< Key > > set
Specialization of set which uses ut_allocator.
Definition: ut0new.h:2882
static char recovery_channel_name[]
The relay log name.
Definition: recovery.cc:45
enum st_state_transfer_status State_transfer_status
st_state_transfer_status
Definition: recovery_state_transfer.h:38
@ STATE_TRANSFER_OK
Definition: recovery_state_transfer.h:39
@ STATE_TRANSFER_STOP
Definition: recovery_state_transfer.h:40
@ STATE_TRANSFER_PURGE
Definition: recovery_state_transfer.h:41
@ STATE_TRANSFER_NO_CONNECTION
Definition: recovery_state_transfer.h:42
required uint64 port
Definition: replication_asynchronous_connection_failover.proto:33
case opt name
Definition: sslopt-case.h:33
An instrumented cond structure.
Definition: mysql_cond_bits.h:50
An instrumented mutex structure.
Definition: mysql_mutex_bits.h:50
unsigned int uint
Definition: uca9-dump.cc:75
int ssl_verify_server_cert(SSL *ssl, const char *server_hostname)