MySQL 26.7.0
Source Code Documentation
mysql::csa::Sync_transaction_provider Class Reference

Implementation of 'Transaction_provider' interface. More...

#include <sync_transaction_provider.h>

Inheritance diagram for mysql::csa::Sync_transaction_provider:
[legend]

Public Member Functions

 Sync_transaction_provider (int instance_id, Relay_log_info *rli, std::size_t max_read_event_bytes, std::size_t max_read_payload_bytes)
 
void start () override
 Starts asynchronous thread that decodes jobs from the stream. More...
 
void stop () override
 Stops provider and wakes blocked reader calls. More...
 
void finish () override
 Completes provider shutdown from the owner thread (transaction receiver). More...
 
Job_ptr next () override
 Consumes the next Job, blocks until fetched. More...
 
bool is_stopped () const override
 Checks if stop has been requested. More...
 
bool is_error () const override
 Check if provider has an error. More...
 
- Public Member Functions inherited from mysql::csa::Transaction_provider
virtual ~Transaction_provider ()=default
 Destructor. More...
 

Private Attributes

std::atomic< bool > m_is_stopped {false}
 Variable to gracefully stop the thread. More...
 
Relay_log_infom_rli
 Pointer to channel rli object. More...
 
Reader_sptr m_reader
 Shared reader object. More...
 
scheduler::Statistics_instance_monitor_ref m_stat_monitor
 Statistics monitoring object. More...
 

Additional Inherited Members

- Public Types inherited from mysql::csa::Transaction_provider
using Common_reader_type = Relay_log_adaptive_reader
 

Detailed Description

Implementation of 'Transaction_provider' interface.

This implementation uses the relay log reader to read consecutive events from the relay log. Data is read from prefetched stream. Main methods are:

  • start : runs asynchronous thread fetching transactions from the relay log
  • stop : stops execution and blocks until thread is joined
  • next : blocks until fetching the next transaction, stop or timeout when outside of transaction boundary
  • is_stopped : Checks whether stop has been requested (externally or by the parent thread)

Constructor & Destructor Documentation

◆ Sync_transaction_provider()

mysql::csa::Sync_transaction_provider::Sync_transaction_provider ( int  instance_id,
Relay_log_info rli,
std::size_t  max_read_event_bytes,
std::size_t  max_read_payload_bytes 
)
Parameters
instance_idInstance (channel) id
rliPointer to relay log info structure
max_read_event_bytesThe maximum number of bytes in a transaction which reader can read, decode and cache
max_read_payload_bytesThe maximum number of bytes in a transaction which reader can read and cache payload

Member Function Documentation

◆ finish()

void mysql::csa::Sync_transaction_provider::finish ( )
overridevirtual

Completes provider shutdown from the owner thread (transaction receiver).

Requires stop to have been called first; otherwise it is a no-op.

Implements mysql::csa::Transaction_provider.

◆ is_error()

bool mysql::csa::Sync_transaction_provider::is_error ( ) const
overridevirtual

Check if provider has an error.

Returns
True in case an error occurred, false otherwise

Implements mysql::csa::Transaction_provider.

◆ is_stopped()

bool mysql::csa::Sync_transaction_provider::is_stopped ( ) const
overridevirtual

Checks if stop has been requested.

Returns
True if stop has been requested internally (error) or externally (log wait for update)

Implements mysql::csa::Transaction_provider.

◆ next()

Job_ptr mysql::csa::Sync_transaction_provider::next ( )
overridevirtual

Consumes the next Job, blocks until fetched.

Return values
Jobsmart pointer
Emptypointer in case stop has been requested (check with 'is_stopped') or we timed out waiting for event. In case we timed out, we return an empty pointer to wake up parent thread for a while, so that it can do some maintenance activities, such as checking status or checking statistics

Implements mysql::csa::Transaction_provider.

◆ start()

void mysql::csa::Sync_transaction_provider::start ( )
overridevirtual

Starts asynchronous thread that decodes jobs from the stream.

Implements mysql::csa::Transaction_provider.

◆ stop()

void mysql::csa::Sync_transaction_provider::stop ( )
overridevirtual

Stops provider and wakes blocked reader calls.

Implements mysql::csa::Transaction_provider.

Member Data Documentation

◆ m_is_stopped

std::atomic<bool> mysql::csa::Sync_transaction_provider::m_is_stopped {false}
private

Variable to gracefully stop the thread.

◆ m_reader

Reader_sptr mysql::csa::Sync_transaction_provider::m_reader
private

Shared reader object.

◆ m_rli

Relay_log_info* mysql::csa::Sync_transaction_provider::m_rli
private

Pointer to channel rli object.

◆ m_stat_monitor

scheduler::Statistics_instance_monitor_ref mysql::csa::Sync_transaction_provider::m_stat_monitor
private

Statistics monitoring object.


The documentation for this class was generated from the following files: