Skip to content

Commit

Permalink
MDEV-14333 Mariabackup --apply-log-only crashes if incomplete transac…
Browse files Browse the repository at this point in the history
…tions with update_undo logs are present

trx_undo_free_prepared(): Relax the assertion for
mariabackup --apply-log-only.
  • Loading branch information
dr-m committed Nov 9, 2017
1 parent 0fdb0bd commit d2ffafe
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 6 deletions.
10 changes: 8 additions & 2 deletions mysql-test/suite/mariabackup/incremental_backup.result
Original file line number Diff line number Diff line change
@@ -1,8 +1,14 @@
call mtr.add_suppression("InnoDB: New log files created");
CREATE TABLE t(i INT) ENGINE INNODB;
CREATE TABLE t(i INT PRIMARY KEY) ENGINE INNODB;
BEGIN;
INSERT INTO t VALUES(2);
SET GLOBAL innodb_flush_log_at_trx_commit = 1;
INSERT INTO t VALUES(1);
# Create full backup , modify table, then create incremental/differential backup
INSERT INTO t VALUES(2);
BEGIN;
INSERT INTO t VALUES(0);
DELETE FROM t WHERE i=0;
COMMIT;
SELECT * FROM t;
i
1
Expand Down
16 changes: 12 additions & 4 deletions mysql-test/suite/mariabackup/incremental_backup.test
Original file line number Diff line number Diff line change
Expand Up @@ -4,23 +4,31 @@ call mtr.add_suppression("InnoDB: New log files created");
let $basedir=$MYSQLTEST_VARDIR/tmp/backup;
let $incremental_dir=$MYSQLTEST_VARDIR/tmp/backup_inc1;


CREATE TABLE t(i INT) ENGINE INNODB;
CREATE TABLE t(i INT PRIMARY KEY) ENGINE INNODB;
BEGIN;
INSERT INTO t VALUES(2);
connect (con1,localhost,root,,);
SET GLOBAL innodb_flush_log_at_trx_commit = 1;
INSERT INTO t VALUES(1);

echo # Create full backup , modify table, then create incremental/differential backup;
--disable_result_log
exec $XTRABACKUP --defaults-file=$MYSQLTEST_VARDIR/my.cnf --backup --target-dir=$basedir;
--enable_result_log
INSERT INTO t VALUES(2);
BEGIN;
INSERT INTO t VALUES(0);
DELETE FROM t WHERE i=0;
connection default;
COMMIT;
SELECT * FROM t;
exec $XTRABACKUP --defaults-file=$MYSQLTEST_VARDIR/my.cnf --backup --target-dir=$incremental_dir --incremental-basedir=$basedir;

--disable_result_log
echo # Prepare full backup, apply incremental one;
exec $XTRABACKUP --prepare --apply-log-only --target-dir=$basedir;
exec $XTRABACKUP --prepare --target-dir=$basedir --incremental-dir=$incremental_dir ;
exec $XTRABACKUP --prepare --apply-log-only --target-dir=$basedir --incremental-dir=$incremental_dir ;

disconnect con1;
echo # Restore and check results;
let $targetdir=$basedir;
-- source include/restart_and_restore.inc
Expand Down
1 change: 1 addition & 0 deletions storage/xtradb/trx/trx0undo.cc
Original file line number Diff line number Diff line change
Expand Up @@ -2025,6 +2025,7 @@ trx_undo_free_prepared(
/* lock_trx_release_locks() assigns
trx->is_recovered=false */
ut_a(srv_read_only_mode
|| srv_apply_log_only
|| srv_force_recovery >= SRV_FORCE_NO_TRX_UNDO);
break;
default:
Expand Down

0 comments on commit d2ffafe

Please sign in to comment.