MDEV-30953 Add mariadb server galera package#4644
MDEV-30953 Add mariadb server galera package#4644grooverdan wants to merge 3 commits intoMariaDB:12.3from
Conversation
|
I am trying to understand the context here. Seems branch 'main' got a865a7c five days ago and it was already released with MariaDB 12.3.1. The commit only has a title ("MDEV-38744 remove galera dependency from server packages") and no body. The Jira MDEV-38744 created 10 days ago has the description "remove galera dependency from server packages. from bintars too." and nothing else. |
debian/control
Outdated
| ${misc:Depends}, | ||
| ${shlibs:Depends} | ||
| Conflicts: mariadb-server (<< 12.3) | ||
| Breaks: mariadb-server (<< 1:12.3) |
There was a problem hiding this comment.
I haven't tested, but I suspect this also needs a Replaces: mariadb-server (<< 1:12.3.2) and that all versions should be 1:12.3.2?
There was a problem hiding this comment.
I didn't check either, but we've moved files between packages in the past, there are examples in the history of how to set this up correctly.
Also, rpm packages might need similar conflicts/replaces. Again, drawing from earlier such cases.
There was a problem hiding this comment.
If we do Replaces: its a better experience for those using galera already.
For those not using galera already, gaining a 60-galera.cnf with uncommented configuration would a bit of a surprise.
I liked providing an uncommented 60-galera.cnf for new installs, but that goes against the concept of it being a Replaces package.
What would you like?
Yep, I'm ranting a bit on this already, because the context is new to me too. Since its also excluded from the release mirrors and archives and release notes. Thanks for the rest of the comments. |
|
I do not know is this good solution. I have advocated that galera library should be submodule or external project for server so that bind between server release and galera library would be more explicit. But, it naturally effects on packages so not sure if it doable. |
For the purposes of packaging it does not matter if Galera is a submodule or how it is done. For example libmariadb is a submodule but built and shipped with the server. I guess the main question here is what is the goal, and then that dictates what is the best path to it. |
|
Firstly, both commit comment and description in MDEV lacks reasoning and details. Bare minimum for both is |
|
@janlindstrom I've put a descriptive commit for now. Covering the previous questions.
On options, galera's intermediate state between a implementation with strong ties to the server implementation is there (from the previous compatibility requirements between them) and the (semi) external project appears contradictory to this. Some resolution would be nice. This is proving an easy of install of MariaDB+galera and leaves MariaDB-server as a Deb/RPM without explicitly galera only dependencies. A migration to a fully external or even coming a server submodule could still be served by this overarching packaging. I haven't yet incorporated Otto's review comments, but they won't be forgotten. Getting a concept approved is a good first step. |
|
@grooverdan Unfortunately, new commit comment is not answering my questions. Firstly, add description, reasoning and goal to MDEV-30953 and make sure you have answered questions raised here except the fact is galera submodule or not. Similarly, enhance commit comment based on above description ,reasoning and goal. I can't approve something that I do not yet fully understand. |
vuvova
left a comment
There was a problem hiding this comment.
Thanks for doing it! I personally wanted it for quite a long time, but was never sure that benefits would overweight the introduced incompatibility.
See comments inline.
cmake/cpack_rpm.cmake
Outdated
| SETA(CPACK_RPM_server_galera_PACKAGE_REQUIRES | ||
| "galera-4" "rsync" "lsof" "grep" "gawk" "iproute" | ||
| "coreutils" "findutils" "tar") | ||
| SETA(CPACK_RPM_server_PACKAGE_RECOMMENDS "pv") |
There was a problem hiding this comment.
I'd say that either Server_Galera should require all this unconditionally (not depending on WITH_WSREP) or Server_Galera should be added to CPACK_COMPONENTS_ALL conditionally.
That is, either MariaDB_server_galera does not depend on WITH_WSREP at all, or it's not even built without wsrep. The latter makes more sense to me.
Also, why pv is still a server dependency? you didn't do it in deb
And MariaDB_galera_server should require MariaDB_server, like you did in debs.
A question — should MariaDB-test require server or server-galera? I don't have a strong opinion on that. Or require server and recommend server-galera? Both in rpm and deb, of course
debian/control
Outdated
| ${misc:Depends}, | ||
| ${shlibs:Depends} | ||
| Conflicts: mariadb-server (<< 12.3) | ||
| Breaks: mariadb-server (<< 1:12.3) |
There was a problem hiding this comment.
I didn't check either, but we've moved files between packages in the past, there are examples in the history of how to set this up correctly.
Also, rpm packages might need similar conflicts/replaces. Again, drawing from earlier such cases.
MDEV-38744 removed the galera as a server dependency, and we've decided to put it back. While we put it back and there's a fresh release series, lets incorporate some packaging improvements. Historicly, since 10.1 when Galera became part of the server the MariaDB-server package included all the dependencies of Galera, its SST scripts, in case the user wanted the. There where many cases where this wasn't the case. As we separate out to a separate mariadb-server-galera package, we give the option if they want a galera install and have its dependencies, or a more minimal installation. To facilitate this: Add new package mariadb-server-galera to Debian to recude mariadb-server package dependencies. Galera cluster scripts and libraries are currently in package mariadb-server. Move Galera cluster scripts and libraries to new package mariadb-server-galera as most of the people does not need them and it allows to slim down mariadb-server package More explictly: As such this moves the following files that were previously in the MariaDB-server packgage to the MariaDB-server-galera package: * README-wsrep * Galera SST scripts * /etc/systemd/system/mariadb@bootstrap.service.d/use_galera_new_cluster.conf The dependencies of the Galera SST scripts are moved to the dependencies of the MariaDB-server-galera package. As the installation of this package is a key indication that galera is required 60-galera.cnf in the configuration has explict galera required configuration items set. The wsrep_cluster_address will however be required to be set by the user. The galera-4 is also a dependency of MariaDB-server-galera package rather than the MariaDB-server package. MariaDB users previously using galera installed instance, that are doing a major upgrade will need to be aware that the new package is required. Non-galera users during a major upgrade are going to get a slightly smaller install, and a bunch of previous installed dependencies that are no longer required and can be removed. The mariadb-test package change its dependency from mariadb-server to mariadb-server-galera so all the requirement of the server are there. Updated/Edited by: Daniel Black <daniel@mariadb.org>
6f06479 to
39b53e4
Compare
Following the previous commit, we apply the same to RPM. Add new package Mariadb-server-galera to RPM build recude mariadb-server package dependencies. Galera cluster scripts and libraries are currently in package mariadb-server. Move Galera cluster scripts and libraries to new package mariadb-server-galera as most of the people does not need them and it allows to slim down mariadb-server package The MariaDB-test package unlike its Debian equal, didn't depend on the MariaDB-server (and now it does), except if WITH_WSREP is specified in which case it depends on the MariaDB-server-galera package Also from a865a7c lsof, socat and pv are RECOMMENDS. * lsof/socat - when selinux is enabled, these aren't used * pv - the galera sst scripts will silently ignore its absence Updated/Edited by: Daniel Black <daniel@mariadb.org>
39b53e4 to
ebd529f
Compare
MDEV-38744 remove galera dependency from server packages, broke the ability of a user to easily install a Galera system.
This broke the container builds in CI.
Rather than leaving a bunch of galera scripts in the server package (that cannot be run without dependencies), lets complete the transition and provide something useful for Galera users and the MariaDB container.
Because a MariaDB-server-galera configuration on the user side is now explicit, we enable minimum galera configuration for the Deb installation.