Skip to content

Commit b36154a

Browse files
committed
Cleanup log_rec_t
1 parent 8cc15c0 commit b36154a

File tree

2 files changed

+13
-10
lines changed

2 files changed

+13
-10
lines changed

storage/innobase/include/log0recv.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ extern void (*log_file_op)(ulint space_id, const byte* flags,
139139
/** Stored redo log record */
140140
struct log_rec_t
141141
{
142-
log_rec_t(lsn_t lsn) : next(NULL), lsn(lsn) {}
142+
log_rec_t(lsn_t lsn) : next(nullptr), lsn(lsn) { ut_ad(lsn); }
143143
log_rec_t()= delete;
144144
log_rec_t(const log_rec_t&)= delete;
145145
log_rec_t &operator=(const log_rec_t&)= delete;

storage/innobase/log/log0recv.cc

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -132,15 +132,15 @@ struct recv_t : public log_rec_t
132132
@param end_lsn end LSN of the mini-transaction
133133
*/
134134
recv_t(uint32_t len, mlog_id_t type, lsn_t start_lsn, lsn_t end_lsn) :
135-
log_rec_t(end_lsn), len(len), type(type), start_lsn(start_lsn), data(NULL)
135+
log_rec_t(end_lsn), start_lsn(start_lsn), len(len), type(type), data(NULL)
136136
{}
137137

138+
/** start LSN of the mini-transaction (not necessarily of this record) */
139+
const lsn_t start_lsn;
138140
/** log record body length in bytes */
139141
const uint32_t len;
140142
/** log record type */
141143
const mlog_id_t type;
142-
/** start LSN of the mini-transaction (not necessarily of this record) */
143-
const lsn_t start_lsn;
144144
/** log record */
145145
struct data_t
146146
{
@@ -1640,6 +1640,9 @@ recv_parse_or_apply_log_rec_body(
16401640
this record yet. */
16411641
break;
16421642
case MLOG_WRITE_STRING:
1643+
ut_ad(!page_zip
1644+
|| fil_page_get_type(page_zip->data)
1645+
<= FIL_PAGE_TYPE_ZBLOB2);
16431646
if (page_id.page_no() || mach_read_from_2(ptr + 2)
16441647
!= 11 + MY_AES_BLOCK_SIZE) {
16451648
/* Not writing crypt_info */
@@ -1881,14 +1884,15 @@ static void recv_recover_page(buf_block_t* block, mtr_t& mtr,
18811884
const ulint chunk_limit = static_cast<ulint>(RECV_DATA_BLOCK_SIZE);
18821885

18831886
for (const log_rec_t* l : p->second.log) {
1887+
ut_ad(l->lsn);
1888+
ut_ad(end_lsn <= l->lsn);
1889+
end_lsn = l->lsn;
1890+
ut_ad(end_lsn <= log_sys.log.scanned_lsn);
1891+
18841892
const recv_t* recv = static_cast<const recv_t*>(l);
18851893
ut_ad(recv->start_lsn);
1886-
ut_ad(recv->lsn);
18871894
ut_ad(recv_start_lsn < recv->start_lsn);
18881895
ut_d(recv_start_lsn = recv->start_lsn);
1889-
ut_ad(end_lsn <= recv->lsn);
1890-
end_lsn = recv->lsn;
1891-
ut_ad(end_lsn <= log_sys.log.scanned_lsn);
18921896

18931897
if (recv->start_lsn < page_lsn) {
18941898
/* Ignore this record, because there are later changes
@@ -1940,6 +1944,7 @@ static void recv_recover_page(buf_block_t* block, mtr_t& mtr,
19401944
recv_parse_or_apply_log_rec_body(
19411945
recv->type, recs, recs + recv->len,
19421946
block->page.id, true, block, &mtr);
1947+
ut_free(buf);
19431948

19441949
end_lsn = recv->start_lsn + recv->len;
19451950
mach_write_to_8(FIL_PAGE_LSN + page, end_lsn);
@@ -1951,8 +1956,6 @@ static void recv_recover_page(buf_block_t* block, mtr_t& mtr,
19511956
mach_write_to_8(FIL_PAGE_LSN + page_zip->data,
19521957
end_lsn);
19531958
}
1954-
1955-
ut_free(buf);
19561959
}
19571960
}
19581961

0 commit comments

Comments
 (0)