So, here are results of a full buildbot run with plugins not being globally disabled – that is, whatever plugins are enabled by default and not disabled by individual tests/suites stay enabled. Please note that it does not make non-default plugins enabled, e.g. the tests were still running without the cracklib plugin.
Additional notes:
- example_key_management was still disabled (because of
MDEV-9948);
- loose-file-key-management-filename was added to options;
- dan builders did not run, but fulltest ones did, so it should be more or less covered;
- P8 builders did not run;
- valgrind and sol10-64 builders were ignored.
In total, there were ~50 failed tests (by name, not by failure count, combinations are grouped under the same name).
2 binlog.binlog_mysqlbinlog2
|
8 connect.infoschema-9739
|
10 encryption.debug_key_management
|
13 encryption.filekeys_nofile
|
16 funcs_1.is_columns_is
|
8 funcs_1.is_columns_is_embedded
|
16 funcs_1.is_columns_mysql
|
4 funcs_1.is_columns_mysql_embedded
|
16 funcs_1.is_statistics
|
16 funcs_1.is_tables_is
|
4 funcs_1.is_tables_is_embedded
|
19 main.bad_frm_crash_5029
|
19 main.bootstrap
|
18 main.features
|
15 main.information_schema
|
15 main.information_schema_all_engines
|
4 main.information_schema-big
|
1 main.mysqlbinlog_row_minimal
|
15 main.mysql_upgrade-6984
|
15 main.mysql_upgrade_no_innodb
|
15 main.mysql_upgrade_view
|
19 main.view
|
18 maria.small_blocksize
|
1 mroonga/storage.variable_match_escalation_threshold_global
|
1 perfschema.csv_table_io
|
1 perfschema.func_file_io
|
1 perfschema.func_mutex
|
1 perfschema.indexed_table_io
|
2 perfschema.innodb_table_io
|
1 perfschema.memory_table_io
|
1 perfschema.merge_table_io
|
1 perfschema.multi_table_io
|
1 perfschema.myisam_file_io
|
1 perfschema.myisam_table_io
|
1 perfschema.part_table_io
|
1 perfschema.privilege_table_io
|
2 perfschema.rollback_table_io
|
2 perfschema.start_server_innodb
|
1 perfschema.start_server_no_file_inst
|
1 perfschema.start_server_on
|
1 perfschema.temp_table_io
|
1 perfschema.trigger_table_io
|
1 perfschema.view_table_io
|
1 plugins.audit_null
|
1 spider/bg.ha
|
18 sql_discovery.simple
|
10 sys_vars.innodb_encrypt_tables_basic
|
4 sys_vars.sysvars_server_embedded
|
14 sys_vars.sysvars_server_notembedded
|
The failures are mainly mismatches due to missing warnings about disabled InnoDB or partitioning, P_S differences (which in fact might even be an actual problem, but it would be minor and out of scope of this task); however, there were also actual failures which cause test abort (as opposed to mismatches), e.g. caused by wrong error codes and such. It is important to know for choosing further approach (see below).
Regarding my earlier concern about timing with enabled InnoDB, in fact it wasn't nearly as awful as I expected. Very roughly, test runs (individual test* entries in builds) take ~20-50% more time than on the regular 10.1 tree, so it's not times more.
Technically, 50 tests is a treatable amount, so we could add a mode to MTR to run such tests. It would require some hacks, so that from the command point of view it worked similar to, lets say, --ps-protocol option – that is, it would tell MTR not to disable optional plugins; but further, it should work more like a combination, so that we could add rdiffs to mismatches. Tests which abort would have to be disabled in this mode, so we would also need include/no_optional_plugins.inc or something like that.
However, I don't know how valuable this mode will be in practice. It will be rather fragile – whenever a plugin gets enabled/disabled by default, it could cause false positives. And as the last experiment shows, even when it was run first time ever, it did not reveal that many real problems – MDEV-9948, a vague issue with P_S, and a test case for an old-ish bug MDEV-6368, that's about it.
So, I have doubts it's really worth trouble. Opinions are welcome.
As already said before, it was about not disabling default plugins. Enabling all plugins is a totally different story, there will be another comment about it.
This has been a recurrent discussion for long time. Here are some points that have been raised before, and that we briefly revisited with serg yesterday in Berlin.
1) "not disabling" plugins and "enabling" plugins are different matters – we cannot, even hypothetically, simply enable all plugins in MTR, because some plugins cannot live together, e.g. InnoDB and XtraDB, Federated and FederatedX; besides, enabling all plugins is as unrealistic setup as disabling all plugins which we have now. So, I suggest that in the scope of this task we think about not disabling plugins which are enabled by default. Enabling non-default plugins can only be done selectively, but then MTR isn't the best place to do it, it can be done more efficiently in individual test runs or suites;
2) hypothetically, we can stop disabling plugins, but it will make many tests unstable – not because of real failures, but because of limitations of the result-based MTR: different plugins will show up on different builds and test runs, and it will be next to impossible to make existing tests deal with it;
3) allowing InnoDB to start in all tests will be insanely time-consuming, especially on debug builds. While I raise this question every now and then, realistically we cannot afford it for all test runs.
As the entry point, I suggest the following: I'll add an experimental option "keep-default-configuration" or something like that in my development tree and let buildbot have a run with it. This way we'll know how many problems we deal with in (2) above. If it appears to be viable, we can add a build run with this option at least for suites where it makes sense.
Everyone, feel free to add your thoughts, ideas or objections.