summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaximilian Bosch <maximilian@mbosch.me>2021-10-01 15:25:31 +0200
committerLara <lara@uwu.is>2021-10-01 20:04:06 +0200
commitf182b8d23b0d92d1d3ad53c604e2cc182c3b25b3 (patch)
tree9b0b080fe151f483535d5158f0bf1e028978ab01
parentnextcloud: 20.0.12 -> 20.0.13, 21.0.4 -> 21.0.5, 22.1.1 -> 22.2.0 (diff)
downloadnixpkgs-f182b8d23b0d92d1d3ad53c604e2cc182c3b25b3.tar.gz
nixos/nextcloud: temp fix for MariaDB >=10.6
The MariaDB version 10.6 doesn't seem supported with current Nextcloud versions and the test fails with the following error[1]: nextcloud # [ 14.950034] nextcloud-setup-start[1001]: Error while trying to initialise the database: An exception occurred while executing a query: SQLSTATE[HY000]: General error: 4047 InnoDB refuses to write tables with ROW_FORMAT=COMPRESSED or KEY_BLOCK_SIZE. According to a support-thread in upstream's Discourse[2] this is because of a missing support so far. Considering that we haven't received any bugreports so far - even though the issue already exists on master - and the workaround[3] appears to work fine, an evaluation warning for administrators should be sufficient. [1] https://hydra.nixos.org/build/155015223 [2] https://help.nextcloud.com/t/update-to-next-cloud-21-0-2-has-get-an-error/117028/15 [3] setting `innodb_read_only_compressed=0` (cherry picked from commit 675e262f5a03eb9aa6b0500434ee30a9d6b882a0)
-rw-r--r--nixos/modules/services/web-apps/nextcloud.nix29
-rw-r--r--nixos/tests/nextcloud/with-mysql-and-memcached.nix7
2 files changed, 35 insertions, 1 deletions
diff --git a/nixos/modules/services/web-apps/nextcloud.nix b/nixos/modules/services/web-apps/nextcloud.nix
index 4b9b0806bac3..d047a7682331 100644
--- a/nixos/modules/services/web-apps/nextcloud.nix
+++ b/nixos/modules/services/web-apps/nextcloud.nix
@@ -399,13 +399,40 @@ in {
The package can be upgraded by explicitly declaring the service-option
`services.nextcloud.package`.
'';
+
+ # FIXME(@Ma27) remove as soon as nextcloud properly supports
+ # mariadb >=10.6.
+ isUnsupportedMariadb =
+ # All currently supported Nextcloud versions are affected.
+ (versionOlder cfg.package.version "23")
+ # This module uses mysql
+ && (cfg.config.dbtype == "mysql")
+ # MySQL is managed via NixOS
+ && config.services.mysql.enable
+ # We're using MariaDB
+ && (getName config.services.mysql.package) == "mariadb-server"
+ # MariaDB is at least 10.6 and thus not supported
+ && (versionAtLeast (getVersion config.services.mysql.package) "10.6");
+
in (optional (cfg.poolConfig != null) ''
Using config.services.nextcloud.poolConfig is deprecated and will become unsupported in a future release.
Please migrate your configuration to config.services.nextcloud.poolSettings.
'')
++ (optional (versionOlder cfg.package.version "19") (upgradeWarning 18 "20.09"))
++ (optional (versionOlder cfg.package.version "20") (upgradeWarning 19 "21.05"))
- ++ (optional (versionOlder cfg.package.version "21") (upgradeWarning 20 "21.05"));
+ ++ (optional (versionOlder cfg.package.version "21") (upgradeWarning 20 "21.05"))
+ ++ (optional (versionOlder cfg.package.version "22") (upgradeWarning 21 "21.11"))
+ ++ (optional isUnsupportedMariadb ''
+ You seem to be using MariaDB at an unsupported version (i.e. at least 10.6)!
+ Please note that this isn't supported officially by Nextcloud. You can either
+
+ * Switch to `pkgs.mysql`
+ * Downgrade MariaDB to at least 10.5
+ * Work around Nextcloud's problems by specifying `innodb_read_only_compressed=0`
+
+ For further context, please read
+ https://help.nextcloud.com/t/update-to-next-cloud-21-0-2-has-get-an-error/117028/15
+ '');
services.nextcloud.package = with pkgs;
mkDefault (
diff --git a/nixos/tests/nextcloud/with-mysql-and-memcached.nix b/nixos/tests/nextcloud/with-mysql-and-memcached.nix
index 82041874de43..de5f53d559a3 100644
--- a/nixos/tests/nextcloud/with-mysql-and-memcached.nix
+++ b/nixos/tests/nextcloud/with-mysql-and-memcached.nix
@@ -39,6 +39,13 @@ in {
enable = true;
bind = "127.0.0.1";
package = pkgs.mariadb;
+
+ # FIXME(@Ma27) Nextcloud isn't compatible with mariadb 10.6,
+ # this is a workaround.
+ # See https://help.nextcloud.com/t/update-to-next-cloud-21-0-2-has-get-an-error/117028/22
+ extraOptions = ''
+ innodb_read_only_compressed=0
+ '';
initialScript = pkgs.writeText "mysql-init" ''
CREATE USER 'nextcloud'@'localhost' IDENTIFIED BY 'hunter2';
CREATE DATABASE IF NOT EXISTS nextcloud;