diff --git a/pkgs/by-name/me/mediawiki/keep-session-object-cache.diff b/pkgs/by-name/me/mediawiki/keep-session-object-cache.diff new file mode 100644 index 000000000000..9d7f078b3ada --- /dev/null +++ b/pkgs/by-name/me/mediawiki/keep-session-object-cache.diff @@ -0,0 +1,13 @@ +diff --git a/includes/Installer/DatabaseUpdater.php b/includes/Installer/DatabaseUpdater.php +index 8ed996b9dee..733a3210096 100644 +--- a/includes/Installer/DatabaseUpdater.php ++++ b/includes/Installer/DatabaseUpdater.php +@@ -1380,7 +1380,7 @@ public function purgeCache() { + // ObjectCache + $this->db->newDeleteQueryBuilder() + ->deleteFrom( 'objectcache' ) +- ->where( ISQLPlatform::ALL_ROWS ) ++ ->where( "keyname NOT LIKE '%:MWSession:%'" ) + ->caller( __METHOD__ ) + ->execute(); + diff --git a/pkgs/by-name/me/mediawiki/package.nix b/pkgs/by-name/me/mediawiki/package.nix index 137a750715aa..9d81a3ccb17b 100644 --- a/pkgs/by-name/me/mediawiki/package.nix +++ b/pkgs/by-name/me/mediawiki/package.nix @@ -14,6 +14,12 @@ stdenvNoCC.mkDerivation rec { hash = "sha256-XqjB8yHJ+Nuk0aweTsoYJ/sTUZ1KIZDiOfUUMgWKQmk="; }; + patches = [ + # NixOS runs the update script on every start as we might need to run some migrations. + # Normally this clears all active sessions, for usability we do not do that. + ./keep-session-object-cache.diff + ]; + postPatch = '' substituteInPlace includes/installer/CliInstaller.php \ --replace-fail '$vars = Installer::getExistingLocalSettings();' '$vars = null;'