Page MenuHomePhabricator

Docker setup is broken because of InnoDB and FULLTEXT
Closed, ResolvedPublic

Description

In the hope of solving T138517 we changed the SQL tables to use InnoDB instead of MyISAM in ae1e775eba3a.

Now, the Docker setup is choking on fill_table_monuments_all.sql with

ERROR 1214 (HY000) at line 15: The used table type doesn't support FULLTEXT indexes

I have updated locally the Docker setup to mariadb:5.5.54, but the same error occurs.

docker-compose -f docker-compose-bot.yml run --rm db bash mysql --version
mysql Ver 15.1 Distrib 5.5.54-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2

This is the same output as in ToolLabs so I’m a bit wary of deploying these changes now :-/

Event Timeline

Change 339549 had a related patch set uploaded (by Jean-Frédéric):
Change database docker image to mariadb:5.5.54

https://gerrit.wikimedia.org/r/339549

Toolsdb were finally upgraded to MariaDB 10/jessie at T157358 last week , so the version bump is not longer a blocker.

Thanks. I've marked https://gerrit.wikimedia.org/r/324396 as non-blocked

@jcrespo If I run mysql --version or dpkg -l | grep mariadb on toollabs I get back 5.5.54-MariaDB, not version 10. Am I misunderstanding something?

@Lokal_Profil I think that just means that the mysql client installed on the hosts we log in to have 5.5 − does not say anything about the DB itself? At that rate, running lsb_release -a returns Ubuntu Trusty, while it should be a Jessie instance.

So if I understand correctly, it was my mistake to model the MariaDB version in Docker on the output of mysql -v on Tools-dev.

Updated the Docker files to use mariadb:10.1. Provisioning works locally. Yay!

@jcrespo Small thing, but can you confirm the exact MariaDB version running on Labs? I hesitated between 10.0 and 10.1 − went for the latest but I’d like to be as close as possible to the versions run on production :)

Anybody can check the version running by doing (you should be able to connect with most versions of mysql client):

$ mysql -h <hosntame> -u <user> -p -e "SELECT @@version"

For tools this is:

+-----------------+
| @@version       |
+-----------------+
| 10.0.29-MariaDB |
+-----------------+

For replicas (the new servers, still WIP) we are at 10.1.

We use a custom version where we sometimes backport some security fixes or workarounds for really bad bugs. In particular, and relevant to this case, our .29 version has some early fixes for InnoDB fulltext that made it crash under certain conditions. .30 will fix that upstream.

We do not discard upgrading to 10.1 for tools, because new replicas use it, and it has some handy features like roles and other stuff. Please create tickets for requests and ask for comments/attention on the list, we are very open for feedback on all of our users' needs. I am not sure we will do it right away, because people may have issues to tune for 10 still.

BTW: If you got some code that checks the server version using mysql -v, report a bug upstream and hit them with a stick in the head :-P

Thanks for the clarification!

I was indeed checking the version of the wrong db

@jcrespo Thanks for the very detailed answer!

Anybody can check the version running by doing (you should be able to connect with most versions of mysql client):

$ mysql -h <hosntame> -u <user> -p -e "SELECT @@version"

Thanks, I actually did not think of that (instead I somehow tried to see that in the puppet config ;-D)

We use a custom version where we sometimes backport some security fixes or workarounds for really bad bugs. In particular, and relevant to this case, our .29 version has some early fixes for InnoDB fulltext that made it crash under certain conditions. .30 will fix that upstream.

We do not discard upgrading to 10.1 for tools, because new replicas use it, and it has some handy features like roles and other stuff. Please create tickets for requests and ask for comments/attention on the list, we are very open for feedback on all of our users' needs. I am not sure we will do it right away, because people may have issues to tune for 10 still.

Thanks for the explanation. I don’t think we have any particular database needs :)

Change 339549 merged by jenkins-bot:
[labs/tools/heritage] Change database docker image to mariadb:10.0

https://gerrit.wikimedia.org/r/339549

I cannot reproduce anymore so closing :)