diff options
author | Michael Widenius <monty@askmonty.org> | 2012-06-27 19:49:59 +0300 |
---|---|---|
committer | Michael Widenius <monty@askmonty.org> | 2012-06-27 19:49:59 +0300 |
commit | 69b817755a1c77a1b8a85843919f55e03400be98 (patch) | |
tree | b2877cc4e975e55ba01cd5cebe8aaca153df3c91 | |
parent | aa67a198e8a29f2fdae84846cc1d8e74c2d47a83 (diff) | |
parent | 44d8fe96461c0605a53159fcdc4bf04a8e5c52b3 (diff) | |
download | mariadb-git-69b817755a1c77a1b8a85843919f55e03400be98.tar.gz |
Automatic merge with 5.5
Fixed failing test case
-rw-r--r-- | mysql-test/include/mtr_check.sql | 1 | ||||
-rwxr-xr-x | mysql-test/mysql-test-run.pl | 3 | ||||
-rw-r--r-- | mysql-test/suite/innodb/r/innodb_bug12902967.result | 2 | ||||
-rw-r--r-- | storage/innobase/os/os0file.c | 23 | ||||
-rw-r--r-- | storage/xtradb/os/os0file.c | 23 | ||||
-rw-r--r-- | storage/xtradb/srv/srv0start.c | 18 |
6 files changed, 53 insertions, 17 deletions
diff --git a/mysql-test/include/mtr_check.sql b/mysql-test/include/mtr_check.sql index 82c0514b7cd..6c1a3513324 100644 --- a/mysql-test/include/mtr_check.sql +++ b/mysql-test/include/mtr_check.sql @@ -30,6 +30,7 @@ BEGIN WHERE variable_name NOT IN ('timestamp', 'innodb_file_format_max') AND variable_name not like "Last_IO_Err*" AND variable_name != 'INNODB_IBUF_MAX_SIZE' + AND variable_name != 'INNODB_USE_NATIVE_AIO' ORDER BY variable_name; -- Dump all databases, there should be none diff --git a/mysql-test/mysql-test-run.pl b/mysql-test/mysql-test-run.pl index eed66491c28..35d428a9681 100755 --- a/mysql-test/mysql-test-run.pl +++ b/mysql-test/mysql-test-run.pl @@ -4739,6 +4739,9 @@ sub extract_warning_lines ($$) { qr|Aborted connection|, qr|table.*is full|, qr|Linux Native AIO|, # warning that aio does not work on /dev/shm + qr|Error: io_setup\(\) failed|, + qr|Warning: io_setup\(\) failed|, + qr|Warning: io_setup\(\) attempt|, ); my $matched_lines= []; diff --git a/mysql-test/suite/innodb/r/innodb_bug12902967.result b/mysql-test/suite/innodb/r/innodb_bug12902967.result index da1d94d69f5..5958a8dce31 100644 --- a/mysql-test/suite/innodb/r/innodb_bug12902967.result +++ b/mysql-test/suite/innodb/r/innodb_bug12902967.result @@ -1,6 +1,6 @@ create table t1 (f1 integer primary key) engine innodb; alter table t1 add constraint c1 foreign key (f1) references t1(f1); -ERROR HY000: Error on rename of '#sql-temporary' to './test/t1' (errno: 150) +ERROR HY000: Error on rename of '#sql-temporary' to './test/t1' (errno: 150 "Foreign key constraint is incorrectly formed") InnoDB: has or is referenced in foreign key constraints InnoDB: which are not compatible with the new table definition. drop table t1; diff --git a/storage/innobase/os/os0file.c b/storage/innobase/os/os0file.c index ed5b3116daa..15e66167f26 100644 --- a/storage/innobase/os/os0file.c +++ b/storage/innobase/os/os0file.c @@ -3361,12 +3361,23 @@ os_aio_array_create( if (!os_aio_linux_create_io_ctx(n/n_segments, &array->aio_ctx[i])) { /* If something bad happened during aio setup - we should call it a day and return right away. - We don't care about any leaks because a failure - to initialize the io subsystem means that the - server (or atleast the innodb storage engine) - is not going to startup. */ - return(NULL); + we disable linux native aio. + The disadvantage will be a small memory leak + at shutdown but that's ok compared to a crash + or a not working server. + This frequently happens when running the test suite + with many threads on a system with low fs.aio-max-nr! + */ + + fprintf(stderr, + " InnoDB: Warning: Linux Native AIO disabled " + "because os_aio_linux_create_io_ctx() " + "failed. To get rid of this warning you can " + "try increasing system " + "fs.aio-max-nr to 1048576 or larger or " + "setting innodb_use_native_aio = 0 in my.cnf\n"); + srv_use_native_aio = FALSE; + goto skip_native_aio; } } diff --git a/storage/xtradb/os/os0file.c b/storage/xtradb/os/os0file.c index eefe17df740..5d249d52ce9 100644 --- a/storage/xtradb/os/os0file.c +++ b/storage/xtradb/os/os0file.c @@ -3463,12 +3463,23 @@ os_aio_array_create( if (!os_aio_linux_create_io_ctx(n/n_segments, &array->aio_ctx[i])) { /* If something bad happened during aio setup - we should call it a day and return right away. - We don't care about any leaks because a failure - to initialize the io subsystem means that the - server (or atleast the innodb storage engine) - is not going to startup. */ - return(NULL); + we disable linux native aio. + The disadvantage will be a small memory leak + at shutdown but that's ok compared to a crash + or a not working server. + This frequently happens when running the test suite + with many threads on a system with low fs.aio-max-nr! + */ + + fprintf(stderr, + " InnoDB: Warning: Linux Native AIO disabled " + "because os_aio_linux_create_io_ctx() " + "failed. To get rid of this warning you can " + "try increasing system " + "fs.aio-max-nr to 1048576 or larger or " + "setting innodb_use_native_aio = 0 in my.cnf\n"); + srv_use_native_aio = FALSE; + goto skip_native_aio; } } diff --git a/storage/xtradb/srv/srv0start.c b/storage/xtradb/srv/srv0start.c index 59697731e6c..75e8097ee0b 100644 --- a/storage/xtradb/srv/srv0start.c +++ b/storage/xtradb/srv/srv0start.c @@ -1509,10 +1509,20 @@ innobase_start_or_create_for_mysql(void) } # endif /* __WIN__ */ - os_aio_init(io_limit, - srv_n_read_io_threads, - srv_n_write_io_threads, - SRV_MAX_N_PENDING_SYNC_IOS); + if (!os_aio_init(io_limit, + srv_n_read_io_threads, + srv_n_write_io_threads, + SRV_MAX_N_PENDING_SYNC_IOS)) + { + ut_print_timestamp(stderr); + fprintf(stderr, + " InnoDB: Fatal error: cannot initialize AIO" + " sub-system\n"); +#if defined(LINUX_NATIVE_AIO) + fprintf(stderr, "You can try increasing system fs.aio-max-nr to 1048576 or larger or setting innodb_use_native_aio = 0 in my.cnf\n"); +#endif + return(DB_ERROR); + } fil_init(srv_file_per_table ? 50000 : 5000, srv_max_n_open_files); |