summaryrefslogtreecommitdiff
path: root/storage/innobase/include/log0recv.h
diff options
context:
space:
mode:
Diffstat (limited to 'storage/innobase/include/log0recv.h')
-rw-r--r--storage/innobase/include/log0recv.h23
1 files changed, 12 insertions, 11 deletions
diff --git a/storage/innobase/include/log0recv.h b/storage/innobase/include/log0recv.h
index 91b0cd7cc1f..371f492c564 100644
--- a/storage/innobase/include/log0recv.h
+++ b/storage/innobase/include/log0recv.h
@@ -149,7 +149,7 @@ struct recv_dblwr_t {
/** the recovery state and buffered records for a page */
struct page_recv_t
{
- /** Recovery state */
+ /** Recovery state; protected by recv_sys.mutex */
enum
{
/** not yet processed */
@@ -216,10 +216,14 @@ struct page_recv_t
};
/** Recovery system data structure */
-struct recv_sys_t{
- ib_mutex_t mutex; /*!< mutex protecting the fields apply_log_recs,
- n_addrs, and the state field in each recv_addr
- struct */
+struct recv_sys_t
+{
+ /** mutex protecting apply_log_recs and page_recv_t::state */
+ ib_mutex_t mutex;
+ /** whether recv_recover_page(), invoked from buf_page_io_complete(),
+ should apply log records*/
+ bool apply_log_recs;
+
ib_mutex_t writer_mutex;/*!< mutex coordinating
flushing between recv_writer_thread and
the recovery thread. */
@@ -230,9 +234,6 @@ struct recv_sys_t{
buf_flush_t flush_type;/*!< type of the flush request.
BUF_FLUSH_LRU: flush end of LRU, keeping free blocks.
BUF_FLUSH_LIST: flush all of blocks. */
- /** whether recv_recover_page(), invoked from buf_page_io_complete(),
- should apply log records*/
- bool apply_log_recs;
/** whether recv_apply_hashed_log_recs() is running */
bool apply_batch_on;
byte* buf; /*!< buffer for parsing log records */
@@ -246,9 +247,6 @@ struct recv_sys_t{
lsn_t scanned_lsn;
/*!< the log data has been scanned up to this
lsn */
- ulint scanned_checkpoint_no;
- /*!< the log data has been scanned up to this
- checkpoint number (lowest 4 bytes) */
ulint recovered_offset;
/*!< start offset of non-parsed log records in
buf */
@@ -266,6 +264,9 @@ struct recv_sys_t{
/** the time when progress was last reported */
time_t progress_time;
+ /** The sequence bit of the next record to parse */
+ bool sequence_bit;
+
using map = std::map<const page_id_t, page_recv_t,
std::less<const page_id_t>,
ut_allocator<std::pair<const page_id_t, page_recv_t>>>;