From a0f5a42e908f64e7d63d36db964587796634ee01 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jakub=20Klinkovsk=C3=BD?= <lahwaacz@archlinux.org>
Date: Sat, 18 Sep 2021 15:54:06 +0200
Subject: [PATCH] archwiki: ensure that MediaWiki file cache is invalidated on
 each MediaWiki update

We've hit this problem at least twice in the past, last time with the new
Vector skin update. With this change it should not be necessary to do
anything manually after an update.
---
 roles/archwiki/handlers/main.yml | 9 +++++++++
 roles/archwiki/tasks/main.yml    | 4 +++-
 2 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/roles/archwiki/handlers/main.yml b/roles/archwiki/handlers/main.yml
index c701c2176..89cfdd4ef 100644
--- a/roles/archwiki/handlers/main.yml
+++ b/roles/archwiki/handlers/main.yml
@@ -15,3 +15,12 @@
 # reference: https://stackoverflow.com/a/6896903
 - name: purge nginx cache
   command: find /var/lib/nginx/cache -type f -delete
+
+# The MediaWiki file cache can be invalidated by deleting the files in the
+# cache, by setting $wgCacheEpoch to the current time, or by touching the
+# LocalSettings.php file (thanks to $wgInvalidateCacheOnLocalSettingsChange
+# being set to true). References:
+# - https://www.mediawiki.org/wiki/Manual:File_cache
+# - https://www.mediawiki.org/wiki/Manual:$wgInvalidateCacheOnLocalSettingsChange
+- name: invalidate MediaWiki file cache
+  file: path="{{ archwiki_dir }}/public/LocalSettings.php" state=touch
diff --git a/roles/archwiki/tasks/main.yml b/roles/archwiki/tasks/main.yml
index 7ef45cd9c..e3bbf0209 100644
--- a/roles/archwiki/tasks/main.yml
+++ b/roles/archwiki/tasks/main.yml
@@ -60,8 +60,10 @@
   become_user: "{{ archwiki_user }}"
   notify:
     - run wiki updatescript
-    # purge the nginx cache to make sure clients get the updated assets
+    # purge the nginx cache and MediaWiki file cache to make sure clients get updated assets
+    # as well as freshly rendered pages using the new assets
     - purge nginx cache
+    - invalidate MediaWiki file cache
 
 - name: configure archwiki
   template: src=LocalSettings.php.j2 dest="{{ archwiki_dir }}/public/LocalSettings.php" owner="{{ archwiki_user }}" group="{{ archwiki_user }}" mode=0640
-- 
GitLab