24#ifndef PIPELINE_STATS_INCLUDED
25#define PIPELINE_STATS_INCLUDED
128 int32 transactions_waiting_certification,
129 int32 transactions_waiting_apply,
int64 transactions_certified,
130 int64 transactions_applied,
int64 transactions_local,
131 int64 transactions_negative_certified,
int64 transactions_rows_validating,
132 bool transaction_gtids,
133 const std::string &transactions_committed_all_members,
134 const std::string &transactions_last_conflict_free,
262 const unsigned char *
end)
override;
635 const std::string &member_id);
This has the functionality of mysql_rwlock_t, with two differences:
Definition: rpl_gtid.h:325
The pipeline stats aggregator of all group members stats and flow control module.
Definition: pipeline_stats.h:608
Flow_control_module()
Default constructor.
Definition: pipeline_stats.cc:726
Flow_control_module_info m_info
Definition: pipeline_stats.h:668
int seconds_to_skip
Definition: pipeline_stats.h:694
std::atomic< int64 > m_quota_used
Definition: pipeline_stats.h:683
static const int64 MAXTPS
Definition: pipeline_stats.h:610
int32 do_wait()
Compute and wait the amount of time in microseconds that must be elapsed before a new message is sent...
Definition: pipeline_stats.cc:1002
mysql_cond_t m_flow_control_cond
Definition: pipeline_stats.h:666
virtual ~Flow_control_module()
Destructor.
Definition: pipeline_stats.cc:743
void flow_control_step(Pipeline_stats_member_collector *)
Evaluate the information received in the last flow control period and adjust the system parameters ac...
Definition: pipeline_stats.cc:749
mysql_mutex_t m_flow_control_lock
Definition: pipeline_stats.h:665
std::atomic< int32 > m_holds_in_period
Definition: pipeline_stats.h:678
int handle_stats_data(const uchar *data, size_t len, const std::string &member_id)
Handles a Pipeline_stats_message, updating the Flow_control_module_info and the delay,...
Definition: pipeline_stats.cc:943
uint64 m_stamp
Definition: pipeline_stats.h:689
Pipeline_member_stats * get_pipeline_stats(const std::string &member_id)
Returns copy of individual member stats information.
Definition: pipeline_stats.cc:980
std::atomic< int64 > m_quota_size
Definition: pipeline_stats.h:684
Checkable_rwlock * m_flow_control_module_info_lock
Definition: pipeline_stats.h:672
Computed statistics per member.
Definition: pipeline_stats.h:433
std::string m_transaction_last_conflict_free
Definition: pipeline_stats.h:590
int64 m_delta_transactions_certified
Definition: pipeline_stats.h:582
void set_transaction_committed_all_members(char *str, size_t len)
Set the stable group transactions.
Definition: pipeline_stats.cc:692
Flow_control_mode m_flow_control_mode
Definition: pipeline_stats.h:592
void get_transaction_last_conflict_free(std::string &value)
Get the last positive certified transaction.
Definition: pipeline_stats.cc:697
int64 m_transactions_applied
Definition: pipeline_stats.h:583
uint64 get_stamp()
Get the last stats update stamp.
Definition: pipeline_stats.cc:711
int64 get_transactions_certified()
Get transactions certified counter value.
Definition: pipeline_stats.cc:663
int64 m_delta_transactions_local
Definition: pipeline_stats.h:586
int32 m_transactions_waiting_certification
Definition: pipeline_stats.h:579
void set_transaction_last_conflict_free(std::string &value)
Set the last positive certified transaction.
Definition: pipeline_stats.cc:702
int64 get_transactions_local()
Get local member transactions proposed counter value.
Definition: pipeline_stats.cc:671
int64 get_transactions_negative_certified()
Get transactions negatively certified.
Definition: pipeline_stats.cc:675
std::string m_transactions_committed_all_members
Definition: pipeline_stats.h:589
int64 get_delta_transactions_applied()
Get transactions applied since last stats message.
Definition: pipeline_stats.cc:655
int32 get_transactions_waiting_certification()
Get transactions waiting certification counter value.
Definition: pipeline_stats.cc:643
uint64 m_stamp
Definition: pipeline_stats.h:593
Flow_control_mode get_flow_control_mode()
Get flow_control_mode of a member.
Definition: pipeline_stats.cc:707
int32 get_transactions_waiting_apply()
Get transactions waiting apply counter value.
Definition: pipeline_stats.cc:647
Pipeline_member_stats()
Default constructor.
Definition: pipeline_stats.cc:532
int64 m_transactions_local
Definition: pipeline_stats.h:585
void debug(const char *member, int64 quota_size, int64 quota_used)
Definition: pipeline_stats.cc:714
void get_transaction_committed_all_members(std::string &value)
Get the stable group transactions.
Definition: pipeline_stats.cc:687
int64 m_transactions_negative_certified
Definition: pipeline_stats.h:587
int64 m_transactions_rows_validating
Definition: pipeline_stats.h:588
int64 m_transactions_certified
Definition: pipeline_stats.h:581
int32 m_transactions_waiting_apply
Definition: pipeline_stats.h:580
int64 get_transactions_rows_validating()
Get certification database counter value.
Definition: pipeline_stats.cc:679
void update_member_stats(Pipeline_stats_member_message &msg, uint64 stamp)
Updates member statistics with a new message from the network.
Definition: pipeline_stats.cc:590
int64 get_delta_transactions_certified()
Get transactions certified since last stats message.
Definition: pipeline_stats.cc:651
int64 m_transactions_local_rollback
Definition: pipeline_stats.h:591
int64 get_delta_transactions_local()
Get local transactions that member tried to commit since last stats message.
Definition: pipeline_stats.cc:659
bool is_flow_control_needed()
Returns true if the node is behind on some user-defined criteria.
Definition: pipeline_stats.cc:635
int64 m_delta_transactions_applied
Definition: pipeline_stats.h:584
int64 get_transactions_local_rollback()
Get local member transactions negatively certified.
Definition: pipeline_stats.cc:683
int64 get_transactions_applied()
Get transactions applied counter value.
Definition: pipeline_stats.cc:667
The pipeline collector for the local member stats.
Definition: pipeline_stats.h:284
int64 get_transactions_local_rollback()
Definition: pipeline_stats.cc:408
void decrement_transactions_waiting_apply()
Decrement transactions waiting apply counter value.
Definition: pipeline_stats.cc:370
std::atomic< uint64 > m_delta_transactions_applied_during_recovery
Definition: pipeline_stats.h:421
void increment_transactions_applied()
Increment transactions applied counter value.
Definition: pipeline_stats.cc:380
std::atomic< int64 > m_transactions_certified
Definition: pipeline_stats.h:412
Pipeline_stats_member_collector()
Default constructor.
Definition: pipeline_stats.cc:336
void clear_transactions_waiting_apply()
Set transactions waiting apply counter to 0.
Definition: pipeline_stats.cc:357
std::atomic< uint64 > m_transactions_certified_during_recovery
Definition: pipeline_stats.h:417
int64 get_transactions_applied()
Definition: pipeline_stats.cc:400
void increment_transactions_certified()
Increment transactions certified counter value.
Definition: pipeline_stats.cc:376
void increment_transactions_local()
Increment local transactions counter value.
Definition: pipeline_stats.cc:384
void compute_transactions_deltas_during_recovery()
Compute the transactions applied during last flow-control tick while the member is in recovery.
Definition: pipeline_stats.cc:432
void send_stats_member_message(Flow_control_mode mode)
Send member statistics to group.
Definition: pipeline_stats.cc:479
uint64 get_delta_transactions_applied_during_recovery()
Definition: pipeline_stats.cc:441
std::atomic< uint64 > m_transactions_certified_negatively_during_recovery
Definition: pipeline_stats.h:418
std::atomic< int64 > m_transactions_local_rollback
Definition: pipeline_stats.h:415
void increment_transactions_certified_during_recovery()
Increment certified transactions during recovery counter value.
Definition: pipeline_stats.cc:417
std::atomic< int64 > m_transactions_applied
Definition: pipeline_stats.h:413
void increment_transactions_waiting_apply()
Increment transactions waiting apply counter value.
Definition: pipeline_stats.cc:363
mysql_mutex_t m_transactions_waiting_apply_lock
Definition: pipeline_stats.h:425
std::atomic< uint64 > m_transactions_delivered_during_recovery
Definition: pipeline_stats.h:422
uint64 get_transactions_waiting_apply_during_recovery()
Definition: pipeline_stats.cc:446
void increment_transactions_certified_negatively_during_recovery()
Increment negatively certified transactions during recovery counter value.
Definition: pipeline_stats.cc:422
int32 get_transactions_waiting_apply()
Definition: pipeline_stats.cc:392
uint64 m_previous_transactions_applied_during_recovery
Definition: pipeline_stats.h:420
uint64 get_transactions_waiting_certification_during_recovery()
Definition: pipeline_stats.cc:472
void increment_transactions_applied_during_recovery()
Increment local recovery transactions counter value.
Definition: pipeline_stats.cc:427
void increment_transactions_local_rollback()
Increment local rollback transactions counter value.
Definition: pipeline_stats.cc:388
int64 get_transactions_local()
Definition: pipeline_stats.cc:404
bool send_transaction_identifiers
Definition: pipeline_stats.h:424
void set_send_transaction_identifiers()
Send Transaction Identifiers or not.
Definition: pipeline_stats.cc:412
std::atomic< int64 > m_transactions_local
Definition: pipeline_stats.h:414
std::atomic< int32 > m_transactions_waiting_apply
Definition: pipeline_stats.h:411
int64 get_transactions_certified()
Definition: pipeline_stats.cc:396
std::atomic< uint64 > m_transactions_applied_during_recovery
Definition: pipeline_stats.h:419
void increment_transactions_delivered_during_recovery()
Increment delivered transactions during recovery counter value.
Definition: pipeline_stats.cc:467
virtual ~Pipeline_stats_member_collector()
Destructor.
Definition: pipeline_stats.cc:353
Describes all statistics sent by members.
Definition: pipeline_stats.h:48
int64 m_transactions_rows_validating
Definition: pipeline_stats.h:271
enum_payload_item_type
Definition: pipeline_stats.h:50
@ PIT_TRANSACTIONS_CERTIFIED
Definition: pipeline_stats.h:61
@ PIT_TRANSACTIONS_COMMITTED_ALL_MEMBERS
Definition: pipeline_stats.h:76
@ PIT_TRANSACTION_LAST_CONFLICT_FREE
Definition: pipeline_stats.h:79
@ PIT_TRANSACTIONS_APPLIED
Definition: pipeline_stats.h:64
@ PIT_TRANSACTIONS_NEGATIVE_CERTIFIED
Definition: pipeline_stats.h:70
@ PIT_TRANSACTIONS_LOCAL_ROLLBACK
Definition: pipeline_stats.h:82
@ PIT_MAX
Definition: pipeline_stats.h:94
@ PIT_TRANSACTIONS_WAITING_CERTIFICATION
Definition: pipeline_stats.h:55
@ PIT_TRANSACTION_GTIDS_PRESENT
Definition: pipeline_stats.h:88
@ PIT_TRANSACTIONS_WAITING_APPLY
Definition: pipeline_stats.h:58
@ PIT_SENT_TIMESTAMP
Definition: pipeline_stats.h:91
@ PIT_TRANSACTIONS_LOCAL
Definition: pipeline_stats.h:67
@ PIT_UNKNOWN
Definition: pipeline_stats.h:52
@ PIT_TRANSACTIONS_ROWS_VALIDATING
Definition: pipeline_stats.h:73
@ PIT_FLOW_CONTROL_MODE
Definition: pipeline_stats.h:85
int32 get_transactions_waiting_certification()
Get transactions waiting certification counter value.
Definition: pipeline_stats.cc:110
Flow_control_mode m_flow_control_mode
Definition: pipeline_stats.h:276
int64 m_transactions_local_rollback
Definition: pipeline_stats.h:275
std::string m_transaction_last_conflict_free
Definition: pipeline_stats.h:274
bool m_transaction_gtids_present
Definition: pipeline_stats.h:272
int32 get_transactions_waiting_apply()
Get transactions waiting apply counter value.
Definition: pipeline_stats.cc:120
int64 m_transactions_applied
Definition: pipeline_stats.h:268
int64 get_transactions_local_rollback()
Get local transactions rolled back by the member.
Definition: pipeline_stats.cc:149
static uint64_t get_sent_timestamp(const unsigned char *buffer, size_t length)
Return the time at which the message contained in the buffer was sent.
Definition: pipeline_stats.cc:329
Pipeline_stats_member_message(int32 transactions_waiting_certification, int32 transactions_waiting_apply, int64 transactions_certified, int64 transactions_applied, int64 transactions_local, int64 transactions_negative_certified, int64 transactions_rows_validating, bool transaction_gtids, const std::string &transactions_committed_all_members, const std::string &transactions_last_conflict_free, int64 transactions_local_rollback, Flow_control_mode mode)
Message constructor.
Definition: pipeline_stats.cc:68
int64 get_transactions_negative_certified()
Get negatively certified transaction by member.
Definition: pipeline_stats.cc:135
~Pipeline_stats_member_message() override
Message destructor.
void encode_payload(std::vector< unsigned char > *buffer) const override
Encodes the message contents for transmission.
Definition: pipeline_stats.cc:171
int64 get_transactions_local()
Get local transactions that member tried to commit.
Definition: pipeline_stats.cc:130
int64 get_transactions_certified()
Get transactions certified.
Definition: pipeline_stats.cc:115
std::string m_transactions_committed_all_members
Definition: pipeline_stats.h:273
void decode_payload(const unsigned char *buffer, const unsigned char *end) override
Message decoding method.
Definition: pipeline_stats.cc:231
const std::string & get_transaction_last_conflict_free()
Get last positive certified transaction.
Definition: pipeline_stats.cc:161
int32 m_transactions_waiting_certification
Definition: pipeline_stats.h:265
int32 m_transactions_waiting_apply
Definition: pipeline_stats.h:266
Flow_control_mode get_flow_control_mode()
Get flow-control mode of member.
Definition: pipeline_stats.cc:166
const std::string & get_transaction_committed_all_members()
Get set of stable group transactions.
Definition: pipeline_stats.cc:155
int64 m_transactions_certified
Definition: pipeline_stats.h:267
bool get_transation_gtids_present() const
Returns a flag indicating whether or not the GTIDs on this stats message are updated/present.
Definition: pipeline_stats.cc:145
int64 m_transactions_negative_certified
Definition: pipeline_stats.h:270
int64 m_transactions_local
Definition: pipeline_stats.h:269
int64 get_transactions_applied()
Get transactions applied.
Definition: pipeline_stats.cc:125
int64 get_transactions_rows_validating()
Get size of conflict detection database.
Definition: pipeline_stats.cc:140
This is the base GCS plugin message.
Definition: gcs_plugin_messages.h:64
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
int32_t int32
Definition: my_inttypes.h:66
uint64_t uint64
Definition: my_inttypes.h:69
std::string str(const mysqlrouter::ConfigGenerator::Options::Endpoint &ep)
Definition: config_generator.cc:1105
Definition: buf0block_hint.cc:30
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:418
Cursor end()
A past-the-end Cursor.
Definition: rules_table_service.cc:192
mode
Definition: file_handle.h:61
std::map< std::string, Pipeline_member_stats > Flow_control_module_info
Data type that holds all members stats.
Definition: pipeline_stats.h:600
Flow_control_mode
Flow control modes: FCM_DISABLED flow control disabled FCM_QUOTA introduces a delay only on transacti...
Definition: pipeline_stats.h:41
@ FCM_DISABLED
Definition: pipeline_stats.h:41
@ FCM_QUOTA
Definition: pipeline_stats.h:41
An instrumented cond structure.
Definition: mysql_cond_bits.h:50
An instrumented mutex structure.
Definition: mysql_mutex_bits.h:50