I would rather stick to the Option 2, with small modifications: By default use MariaDB libraries which compatible with MySQL, so change everywhere INSTALL_MYSQL_CLIENT_TYPE=mariadb - For x86_64 keep option to switch to Oracle MySQL libraries - For ARM it would always forced (or until Oracle provide arm compatible binaries for Debian) to mariad
I think it is pretty safe to use it, because for a long time popular linux distributions such as Debian, Ubuntu, RHEL, Centos provide MariaDB libraries as compatible with MySQL. For example Debian Bookworm: https://packages.debian.org/bookworm/default-mysql-client And this also make consistent ARM and x86_64 by default, and keep possibility to build custom image with Oracle libraries --- Maybe someone who uses custom images for their Managed Airflow Services could give info about what kind of libraries they use for MySQL? I assume in AWS MWAA also use MariaDB (at least what i could see for local-runner) but it my assumption which required confirmation before taking it into the account. On Fri, 15 Dec 2023 at 14:54, Jarek Potiuk <ja...@potiuk.com> wrote: > Hello everyone, > > (sorry for capital letters but we need to act quickly). > > *TL;DR; Due to Oracle breaking MySQL repo signing, Together with Andrey we > have a proposal to - immediately - switch to MariaDB clients in Airflow > images for main and the upcoming Airflow 2.8.0 - giving the user an option > to build their own custom images with MySQL clients if they need > compatibility. * > > Last night it turned out that Oracle failed miserably with managing signing > their repositories and their repositories are now badly signed with expired > keys since yesterday. They acknowledged the issue and they apparently > started to fix it but we have no idea how long it will take. > > The problem is that the policy for signing the MySQL repos Oracle is > essentially flawed - the expiry date is very short - and we will have to > re-release all (!) our historical images - with removed Mysql repository. > > Currently none of our users can extend our images without applying a > workaround where they remove the mysql repository manually or allow > unsecure repositories. > > *Context*: > > Just about we should have our Airflow 2.8.0 release, we have a high > severity breaking change caused by Oracle failing miserably in resigning > their MySQL repositories. The key they used to sign the repositories > expired yesterday. > > They have a new key released in October - that has expiry date in 2025 - > but they forgot to re-sign their repositories with it and currently it is > not possible to securely install MySQL packages via their APT repositories > at all. There is simply no way to do it securely (!). > > If they did it in October, we would have much more time to react and fix > it, but they have not and now we are in a difficult situation (and it will > likely delay the 2.8.0 release). > > We track the issue in https://github.com/apache/airflow/issues/36231 > > There are two severe issues in MySQL bug system (I commented on both of > them): > > https://bugs.mysql.com/bug.php?id=113427 > https://bugs.mysql.com/bug.php?id=113428 > > Basically anyone installing MySQL from the official APT repos has this > problem now. > > *Bigger Problem:* > > The problem is that the way Oracle policy is set (even if they would not > forget to resign the repos), is flawed. It means that all our images that > we release have fixed expiry date (2023-12-14 as it turned out) and we will > have to re-release the images again when they change the key and basically > it requires manually applying the new key when they re-sign the repos > anyway. > > The current workaround is to add this by to their Dockerfile when they are > extending any of our past images: > > > *RUN rm /etc/apt/sources.list.d/mysql.list* > > But this has side effects - for example if someone will run `apt upgrade` > as part of their process, mysql clients will get installed from the > "distro" packages - and they will be outdated. Another workaround is to > add > > *RUN apt update --allow-insecure-repositories* > > But this has obvious issues with security and is not at all recommended. > > We will basically have to rebuild and re-release all our images in order to > fix the problem - regardless of what Oracle does. This is something we > discuss with Andrey how to address it in the best way. > > *Options we have for now:* > > We discussed it with Andrey and we are discussing how to prevent it > happening in the future but we have immediate issue to address now - for > the upcoming 2.8.0 > > We have the following options: > > 1) We wait until Oracle fixes it and signs the repos with new keys. The new > keys are valid till 2025. However we can modify our dockerfile to remove > the mysql repositories after installing mysql to avoid similar problems in > the future. They responded that they are uploading new keys but we are not > sure if we have > > 2) Thanks to what Andrey implemented a few months ago we have an easy way > to switch to MariaDB clients. Those are binary compatible with MySQL and > they are stable and production ready, and they pass all our tests in CI - > https://github.com/apache/airflow/pull/36235 > > 3) Drop MySQL support. Joking here of course - though I suggested it in the > past a few times because of all the problems we have with MySQL and this > one is by far the worst problem we and our users could have experienced). > > Option 1) is a bit "safer" in the "corporate" world - generally sticking to > the "official" clients of "official" DB that we support is the default. > Though my trust with Oracle as MySQL steward had been greatly diminished by > that issue and the flawed approach for their policies. But we do not know > how long it will take. > > Option 2) MariaDB is also very popular and solid and exhibits no such > issues - their signing key is set to "no expiry" so if we switch to > MariaDB, the problem will be gone. We run it for months for all our ARM > images - and anyone using ARM Macbooks and running MySQL with Breeze would > use those. > > *Recommendation:* > > Both myself and Andrey's recommendation is to go to MariaDB for main and > 2.8.0. We are pretty fed-up with a number of past issues we had to fight > with - and even if Oracle fixes it now, we have no faith Oracle can be > trusted as MySQL steward for the repos (Andrey did not have faith for quite > some time now and I lost it today). > > In order to respond to potential edge cases, we can also keep the option > that users who really want it, might be able to rebuild the image with > MySQL drivers - similarly as we give the users the option to use bullseye > in 2.8.0. And we can even run a CI build with it to see that it continues > to work. > > I believe this is the best option and we can get it implemented quickly > today and get RC4 of Airflow with mariadb clients. If we see a > support/consensus for the community we will **just** proceed with it and > start a formal LAZY_CONSENSUS thread. > > WDYT? > > J. >