[MDEV-11626] innodb.innodb-change-buffer-recovery fails for xtradb Created: 2016-12-21  Updated: 2017-06-09  Resolved: 2017-05-29

Status: Closed
Project: MariaDB Server
Component/s: Storage Engine - InnoDB, Storage Engine - XtraDB, Tests
Affects Version/s: 5.5, 10.0, 10.1, 10.2
Fix Version/s: 10.1.24, 5.5.57, 10.0.32, 10.2.7

Type: Bug Priority: Critical
Reporter: Michael Widenius Assignee: Marko Mäkelä
Resolution: Fixed Votes: 0
Labels: None
Environment:

opensuse 10.3, gcc 4.8.3
compiled with ./BUILD/compile-pentium64-valgrind-max


Sprint: 10.2.4-1, 10.2.4-2

 Description   

mysql-test-run innodb.innodb-change-buffer-recovery,xtradb
@@ -36,7 +36,7 @@
SET DEBUG_DBUG='+d,crash_after_log_ibuf_upd_inplace';
SELECT b FROM t1 LIMIT 3;
ERROR HY000: Lost connection to MySQL server during query
-FOUND /Wrote log record for ibuf update in place operation/ in my_restart.err
+NOT FOUND /Wrote log record for ibuf update in place operation/ in my_restart.err
CHECK TABLE t1;



 Comments   
Comment by Marko Mäkelä [ 2017-01-09 ]

I was unable to repeat the failure. The only reason for the failure that I can think of is that the server is crashing for some unexpected reason, before this statement in ibuf0ibuf.cc is executed:

			DBUG_EXECUTE_IF(
				"crash_after_log_ibuf_upd_inplace",
				log_buffer_flush_to_disk();
				ib_logf(IB_LOG_LEVEL_INFO,
					"Wrote log record for ibuf update in "
					"place operation");
				DBUG_SUICIDE();
			);

Next time this occurs, please save the datadir and the server error log for analysis. It should be easy to analyze because during the time of the failure, the server is not running, and we could also use the InnoDB redo log for figuring out what happened.

Comment by Michael Widenius [ 2017-05-29 ]

The problem is that in xtradb there is a LOT of log entries of type:
innodb_change_buffering_debug flush 4 45
innodb_change_buffering_debug evict 4 45

So many that the my_restart.err files becomes more than 50,000 characters, which causes search_pattern_in_file.inc to fail.

Fix: Don't flood the buffer or increase the search limit to 70,000 characters.

Comment by Marko Mäkelä [ 2017-05-29 ]

The error log messages are part of the `innodb_change_buffering_debug` instrumentation that was added to MySQL 5.5 by me in 2010.
There is no real need to flood the server error log with those messages. We can remove them.

However, it is interesting that XtraDB is writing much more of these messages than InnoDB (1064 vs 532). That could be a sign of some real problem.

Generated at Thu Feb 08 07:51:25 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.