Bug #75019 | Assertion error on punch hole + 64k page size + low buffer pool size | ||
---|---|---|---|
Submitted: | 27 Nov 2014 6:52 | Modified: | 28 Nov 2014 2:27 |
Reporter: | Yoshinori Matsunobu (OCA) | Email Updates: | |
Status: | Verified | Impact on me: | |
Category: | MySQL Server: InnoDB storage engine | Severity: | S3 (Non-critical) |
Version: | 5.7.5 lab | OS: | Any |
Assigned to: | Assigned Account | CPU Architecture: | Any |
[27 Nov 2014 6:52]
Yoshinori Matsunobu
[28 Nov 2014 1:40]
Sunny Bains
Yoshinori, thanks for testing :-)
[28 Nov 2014 2:27]
Yoshinori Matsunobu
I could repeat the assertion error with below simple test case. 1. Create the following table create table t1 ( id int primary key, value int, value2 varchar(255), index(value, value2) )engine=innodb; 2. Generate 5Mil rows by the following perl script (so that working set size of primary key and secondary key exceeds buffer poll size) for(my $i=1; $i <= 5000000; $i++) { my $txt = 'x' x 150; print "$i,$i,$txt\n"; } 3. Load the data into table load data local infile '...' into table t1 fields terminated by ','; 4. Run mysqlslap, and see if mysqld crashes. mysqlslap --host=X --port=Y --number-of-queries=1000000 --concurrency=40 --query="set @a= floor(5000000*rand()); update test.t1 set value = value+1 where id=@a" - I used 5.7.5 lab src and built with -DHAVE_FALLOC_PUNCH_HOLE_AND_KEEP_SIZE=1. When starting mysqld, make sure that PUNCH HOLE support is available like this: 2014-11-28T02:20:00.397903Z 0 [Note] InnoDB: PUNCH HOLE support available - InnoDB setting was as follows. Low innodb_buffer_size was intentional. innodb_page_size=65536 innodb_doublewrite=0 innodb_compression_level=1 innodb_compression_algorithm=1 innodb_buffer_pool_size=128M innodb_flush_method=O_DIRECT innodb_flush_log_at_trx_commit=2 innodb_log_file_size=2G