[MDEV-9658] Make MyRocks in MariaDB stable Created: 2016-02-29 Updated: 2018-06-20 Resolved: 2018-06-20 |
|
| Status: | Closed |
| Project: | MariaDB Server |
| Component/s: | Storage Engine - RocksDB |
| Fix Version/s: | 10.2.16, 10.3.7 |
| Type: | Task | Priority: | Critical |
| Reporter: | Colin Charles | Assignee: | Sergei Petrunia |
| Resolution: | Fixed | Votes: | 16 |
| Labels: | 10.2-ga | ||
| Issue Links: |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Sprint: | 10.2.3-2, 10.2.4-4, 10.2.4-5, 10.2.4-1, 10.2.4-2, 10.2.5-1, 10.2.6-2, 10.2.6-3 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Description |
|
This is the umbrella task for including MyRocks Storage Engine from https://github.com/facebook/mysql-5.6 ("FB tree") into MariaDB. Inclusion itselfSee PackagingSee Required changes at the SQL layerA list of changes in the FB tree that touch the SQL layer (based on git log output):
MyRocks (actually, RocksDB and MyRocks together) need support for high-priority transactions to get MariaDB's optimistic Parallel Replication to work. Other issues
|
| Comments |
| Comment by Mark Callaghan [ 2016-10-06 ] | ||||||||||||||
|
Does this mean it is coming to 10.2? | ||||||||||||||
| Comment by Sergei Petrunia [ 2016-10-06 ] | ||||||||||||||
|
mdcallag, yes, that is the plan. | ||||||||||||||
| Comment by Richard Bensley [ 2016-10-07 ] | ||||||||||||||
|
Exciting! For anyone else that is new to this thread; Callaghan and Co. have some myrocks docs here: MariaDB and TokuDB DBA's like myself are probably more interested in the hot backup tool! Will rocks ever become compatible with the Online DDL implementation in MariaDB? | ||||||||||||||
| Comment by Sergei Golubchik [ 2016-10-09 ] | ||||||||||||||
|
Not all these required server changes might be needed for MariaDB. For example (I just picked one commit at random) per-database uuids were obviously created for MySQL GTID implementation, and might be not needed for MariaDB GTID implementation. | ||||||||||||||
| Comment by Kristian Nielsen [ 2016-10-10 ] | ||||||||||||||
|
Mail thread about support for optimistic parallel replication: | ||||||||||||||
| Comment by Sergei Petrunia [ 2016-10-25 ] | ||||||||||||||
|
Status update:
| ||||||||||||||
| Comment by Sergei Petrunia [ 2016-10-25 ] | ||||||||||||||
|
With the 'rocksdb' test suite I currently get:
| ||||||||||||||
| Comment by Mark Callaghan [ 2016-10-25 ] | ||||||||||||||
|
What is the magic to compile it? Using ubuntu 16.04 cmake was: | ||||||||||||||
| Comment by Sergei Petrunia [ 2016-10-25 ] | ||||||||||||||
|
mdcallag, I wanted to note again that most of replication/binlog-related features are still disabled and do not work yet. Judging from the number of test failures, a number of other things are broken as well. Having said that, here are the steps I just used on Ubuntu 16.04.1 to build:
(-DWITHOUT_TOKUDB and -DWITHOUT_MROONGA are just to make the build faster)
Also tried with -DCMAKE_BUILD_TYPE=RelWithDebInfo and it worked (I mean compilation finished and a few tests ran). | ||||||||||||||
| Comment by Mark Callaghan [ 2016-10-26 ] | ||||||||||||||
|
Still trying the release build on ubuntu 16.04. Must be more dependencies. I get this failure:
| ||||||||||||||
| Comment by Sergei Petrunia [ 2016-10-29 ] | ||||||||||||||
|
There is a number of similar test failures in
etc. They all look like this failure in rocksdb.type_varchar:
Debugging it, I can see that in MariaDB:
while in MySQL
and the cause of that is this commit in MariaDB: b6b5f9fabe4866a8753e81e1f80593b645f35d8e In particular the chunk of code in table.cc that starts with:
I'll need to check with Igor what was the exact reason for this logic. MyRocks relies ALL keys having PK extension. (there is already one exception: SQL layer doesn't generate extensions for unique secondary indexes. MyRocks has code to produce index extension for its internal data structures). | ||||||||||||||
| Comment by Sergei Petrunia [ 2016-10-29 ] | ||||||||||||||
|
rocksdb.type_char_indexes fails like this:
. | ||||||||||||||
| Comment by Sergei Petrunia [ 2016-10-31 ] | ||||||||||||||
|
rocksdb.rocksdb_range test failure and similar ones - see | ||||||||||||||
| Comment by Sergei Petrunia [ 2016-11-07 ] | ||||||||||||||
|
Got more tests to work, currently an attempt to run rocksdb test suite gives:
| ||||||||||||||
| Comment by Sergei Petrunia [ 2016-11-22 ] | ||||||||||||||
|
Current status with tests is:
| ||||||||||||||
| Comment by Sergei Petrunia [ 2016-12-06 ] | ||||||||||||||
|
Current status with tests is:
which gives a speed of 26 tests/10 work days | ||||||||||||||
| Comment by Sergei Petrunia [ 2016-12-20 ] | ||||||||||||||
|
Current status is
| ||||||||||||||
| Comment by Sergei Petrunia [ 2017-01-01 ] | ||||||||||||||
|
Merged in the current MyRocks code. This caused more tests to fail. Fixed some of these, but still have:
| ||||||||||||||
| Comment by Sergei Petrunia [ 2017-01-02 ] | ||||||||||||||
|
Got the number of failures back down to
| ||||||||||||||
| Comment by Sergei Petrunia [ 2017-01-03 ] | ||||||||||||||
|
Merged with the current MariaDB-10.2. After test result update, now have:
| ||||||||||||||
| Comment by Sergei Petrunia [ 2017-01-10 ] | ||||||||||||||
|
Fixed or disabled a few more tests. Current status:
| ||||||||||||||
| Comment by Sergei Petrunia [ 2017-01-17 ] | ||||||||||||||
|
From now on, will also run rocksdb_sys_vars test suite. Current status is:
Of 18 failing tests
The tree is now in the buildbot: A few builders: kvm-deb-trusty-amd64, work-amd64-valgrind build and run it. | ||||||||||||||
| Comment by Sergei Petrunia [ 2017-01-19 ] | ||||||||||||||
|
Differences wrt stock MariaDB on the SQL layer: https://gist.github.com/spetrunia/e5d9fb8e94292ae7a7bc623a9c078111 | ||||||||||||||
| Comment by Elena Stepanova [ 2017-01-24 ] | ||||||||||||||
|
Setting to 10.2-ga because of the server changes. The plugin itself can come later, if necessary. | ||||||||||||||
| Comment by Sergei Petrunia [ 2017-01-27 ] | ||||||||||||||
|
Reduced the amount of changes wrt stock MariaDB outside of storage/rocksdb directory. The new diff: https://gist.github.com/spetrunia/c7665515f9c5e714dd8869701fdabcc0 . | ||||||||||||||
| Comment by Sergei Petrunia [ 2017-03-14 ] | ||||||||||||||
|
Attempt to classify the new test failures after last merge: Timeoutrocksdb.drop_table3 w4 [ fail ] timeout after 900 seconds after rocksdb_deadlock_stress_rr on one machine and rocksdb_deadlock_stress_rc
errors in the log Deadlockrocksdb.unique_sec w2 [ fail ] Found warnings/errors in server log file!
Crash in the clientrocksdb.rocksdb_range w3 [ fail ]
Different failures affecting single testsrocksdb.rocksdb w3 [ fail ] Found warnings/errors in server log file!
rocksdb.collation w2 [ fail ]
rocksdb.show_engine w2 [ fail ]
rocksdb.blind_delete_without_tx_api 'mix' w2 [ fail ] Misc failuresrocksdb.rpl_row_not_found 'row' w4 [ fail ]
rocksdb.rpl_row_stats 'row' w4 [ fail ] rocksdb.rpl_row_triggers 'row' w4 [ fail ] rocksdb.trx_info_rpl 'row' w4 [ fail ]
rocksdb.rocksdb_datadir w3 [ fail ]
rocksdb.tbl_opt_data_index_dir w1 [ fail ]
| ||||||||||||||
| Comment by Sergei Petrunia [ 2017-03-14 ] | ||||||||||||||
|
error logs themselves:
| ||||||||||||||
| Comment by Sergei Petrunia [ 2017-03-15 ] | ||||||||||||||
|
A lot of timeouts go away if I set @@rocksdb_flush_logs_at_trx_commit to 0 for the rocksdb test suite: https://gist.github.com/spetrunia/d61bf3f92ca248cd57a3e87504daece0 | ||||||||||||||
| Comment by Sergei Petrunia [ 2017-03-16 ] | ||||||||||||||
|
Current status : we are down to 14 test failures, of which 7 are "something with deadlock detector" and another 7 are individual issues. MTR log: https://gist.github.com/spetrunia/e58537b1efa5094f62ecf5b7b6f60573 Something with deadlock detector rocksdb.rocksdb_locks Loads of errors in the log like this
Isolated failuresrocksdb.misc rocksdb.collation
rocksdb.tbl_opt_data_index_dir
rocksdb.rpl_row_stats rocksdb.rpl_savepoint
rocksdb.blind_delete_without_tx_api
rocksdb.rocksdb_datadir
| ||||||||||||||
| Comment by Sergei Petrunia [ 2017-03-16 ] | ||||||||||||||
|
Down to
On psergey-desktop, debug build, I get 10 failures: https://gist.github.com/spetrunia/d658ea3d195d420156feb8560a4d7b92 . Same as above plus three more. | ||||||||||||||
| Comment by Sergei Petrunia [ 2017-03-16 ] | ||||||||||||||
|
Latest status: | ||||||||||||||
| Comment by Sergei Petrunia [ 2017-03-17 ] | ||||||||||||||
|
Latest status:
There is a new failure - rocksdb.rocksdb. It is not easily reproducible. It doesn't look very bad - it might be a race condition in the test. | ||||||||||||||
| Comment by Sergei Petrunia [ 2017-03-22 ] | ||||||||||||||
|
Current status: | ||||||||||||||
| Comment by Oren Bissick (Inactive) [ 2017-05-24 ] | ||||||||||||||
|
Will Galera be supported? | ||||||||||||||
| Comment by Sergei Petrunia [ 2017-06-05 ] | ||||||||||||||
|
obissick, currently there are no plans for Galera support. Galera integrates tightly with the storage engine, and at the moment the only engine it has integration with is InnoDB/XtraDB. | ||||||||||||||
| Comment by Sergei Petrunia [ 2017-10-18 ] | ||||||||||||||
|
Current status is:
| ||||||||||||||
| Comment by Sergei Petrunia [ 2017-10-22 ] | ||||||||||||||
|
Filed | ||||||||||||||
| Comment by Elena Stepanova [ 2017-10-22 ] | ||||||||||||||
|
psergey, | ||||||||||||||
| Comment by Sergei Petrunia [ 2017-10-23 ] | ||||||||||||||
|
elenst, it is only |