Das Update zu Mastodon v4.7.0 habe ich, wie auch bei anderen Versionen zuvor, einfach gemäss Anleitung aus den Release Notes gemacht.
Die einzelnen Schritte haben dabei einwandfrei geklappt.
Kurz danach meldete mir das Monitoring aber, dass mastodon-streaming@4000.service nicht mehr laufe.
Im Log sah ich dann auch eine Fehlermeldung: TypeError: webidl.util.markAsUncloneable is not a function
Das Problem lies sich dann zum Glück rasch lösen.
Zu Beginn konnte ich die Ursache aus der nachfolgenden Meldung noch nicht identifizieren:
systemd[1]: Started mastodon-streaming@4000.service - mastodon-streaming on port 4000.
node[203732]: /home/mastodon/live/node_modules/undici/lib/web/cache/cachestorage.js:20
node[203732]: webidl.util.markAsUncloneable(this)
node[203732]: ^
node[203732]: TypeError: webidl.util.markAsUncloneable is not a function
node[203732]: at new CacheStorage (/home/mastodon/live/node_modules/undici/lib/web/cache/cachestorage.js:20:17)
node[203732]: at Object.<anonymous> (/home/mastodon/live/node_modules/undici/index.js:179:25)
node[203732]: at Module._compile (node:internal/modules/cjs/loader:1529:14)
node[203732]: at Module._extensions..js (node:internal/modules/cjs/loader:1613:10)
node[203732]: at Module.load (node:internal/modules/cjs/loader:1275:32)
node[203732]: at Module._load (node:internal/modules/cjs/loader:1096:12)
node[203732]: at Module.require (node:internal/modules/cjs/loader:1298:19)
node[203732]: at require (node:internal/modules/helpers:182:18)
node[203732]: at Object.<anonymous> (/home/mastodon/live/node_modules/jsdom/lib/api.js:12:33)
node[203732]: at Module._compile (node:internal/modules/cjs/loader:1529:14)
node[203732]: Node.js v20.19.2
systemd[1]: mastodon-streaming@4000.service: Main process exited, code=exited, status=1/FAILURE
systemd[1]: mastodon-streaming@4000.service: Failed with result 'exit-code'.
Nach einem Blick in die betroffenen Dateien verstand ich dann den Stacktrace uns realisierte, dass die fehlende Funktion teil von Node.js ist.
Also prüfte ich erneut die Release Notes uns sah dort, dass Node.js ab Version 22 benötigt wird. (Das hatte ich wohl schon zuvor bei den 4.6er Versionen erfolgreich ignoriert).
Bei einer kurzen Kontrolle stellte ich fest, dass die bei mir verwendete Node.js 20 Version von Debian 13 / trixie stammt. Also habe ich die Installationsanleitung von Mastodon konsultiert.
Nach dem Einrichten des Repositories von nodesource.com konnte ich die neue Node.js Version installieren.
Der Befehl corepack enable schlug zum Einrichten von yarn schlug dann leider fehl. (Internal Error: ENOENT: no such file or directory)
Dank einem Stackoverflow Post konnte ich das yarn Setup aber reparieren:
corepack disable
npm install -g yarn --force
yarn -v
yarn set version stable
corepack enable
Im Anschluss habe ich zur Sicherheit yarn install --immutable erneut ausgeführt.
Danach konnte ich alle Mastodon Services mit systemctl restart mastodon-* erfolgreich neu starten.