MDEV-26322 Last binlog file and position are "empty" in mariabackup --prepare output

The issue is caused by 59a0236da4 commit.
The initial intention of the commit was to speed up
"mariabackup --prepare".

The call stack of binlog position reading is the following:
▾ trx_rseg_mem_restore
  ▾ trx_rseg_array_init
      ▾ trx_lists_init_at_db_start
            ▸ srv_start
Both trx_lists_init_at_db_start() and trx_rseg_mem_restore() contain
special cases for srv_operation == SRV_OPERATION_RESTORE condition, and
on this condition only rseg headers are read to parse binlog position.
Performance impact is not so big.

The solution is to revert 59a0236da4.
This commit is contained in:
Vlad Lesin 2022-04-01 15:58:31 +03:00
commit 6a3545dd1e
3 changed files with 2 additions and 5 deletions

View file

@ -3,6 +3,6 @@ INSERT INTO t VALUES(1);
SHOW VARIABLES like 'log_bin';
Variable_name Value
log_bin ON
FOUND 1 /Last binlog file .*, position .*/ in current_test
FOUND 1 /Last binlog file .+, position \d+/ in current_test
# expect FOUND
DROP TABLE t;

View file

@ -15,7 +15,7 @@ exec $XTRABACKUP --defaults-file=$MYSQLTEST_VARDIR/my.cnf --backup --target-dir
exec $XTRABACKUP --prepare --binlog-info=1 --target-dir=$basedir ;
let SEARCH_FILE=$MYSQLTEST_VARDIR/log/current_test;
--let SEARCH_PATTERN= Last binlog file .*, position .*
--let SEARCH_PATTERN= Last binlog file .+, position \d+
--source include/search_pattern_in_file.inc
--echo # expect FOUND

View file

@ -1479,9 +1479,6 @@ file_checked:
if (err != DB_SUCCESS) {
return srv_init_abort(err);
}
if (srv_operation == SRV_OPERATION_RESTORE) {
break;
}
err = trx_lists_init_at_db_start();
if (err != DB_SUCCESS) {
return srv_init_abort(err);