Fehlgeschlagenes Upgrade von v2.7.0.beta1 auf v2.7.0.beta2

Bitte sehen Sie sich diesen Gist an: gist:86508bebb133a06f79fadaeba345e3d6 · GitHub

Dies ist eine standardmäßige, eigenständige Discourse-Installation, die versucht, von v2.7.0.beta1 auf v2.7.0.beta2 zu aktualisieren.

Der Fehler tritt hier auf:

uglifyjs '/var/www/discourse/public/assets/_vendor-b631d4ab0775fdbe453aa2158e18dc41826d0ba619e5f2731e5b9fa4c458af99.js' -m -c -o '/var/www/discourse/public/assets/vendor-b631d4ab0775fdbe453aa2158e18dc41826d0ba619e5f2731e5b9fa4c458af99.js' --source-map "base='/var/www/discourse/public/assets',root='/assets',url='/assets/vendor-b631d4ab0775fdbe453aa2158e18dc41826d0ba619e5f2731e5b9fa4c458af99.js.map'"
Parse error at _vendor-b631d4ab0775fdbe453aa2158e18dc41826d0ba619e5f2731e5b9fa4c458af99.js:1850,34
        return Handlebars.compile(...arguments);
                                  ^
ERROR: Unexpected token: punc «.»
    at JS_Parse_Error.get (eval at <anonymous> (/usr/lib/node_modules/uglify-js/tools/node.js:18:1), <anonymous>:71:23)
    at fatal (/usr/lib/node_modules/uglify-js/bin/uglifyjs:394:27)
    at run (/usr/lib/node_modules/uglify-js/bin/uglifyjs:343:9)
    at Object.<anonymous> (/usr/lib/node_modules/uglify-js/bin/uglifyjs:259:5)
    at Module._compile (internal/modules/cjs/loader.js:778:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
    at Module.load (internal/modules/cjs/loader.js:653:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
    at Function.Module._load (internal/modules/cjs/loader.js:585:3)
    at Function.Module.runMain (internal/modules/cjs/loader.js:831:12)
rake aborted!
Errno::ENOENT: No such file or directory @ rb_file_s_size - /var/www/discourse/public/assets/vendor-b631d4ab0775fdbe453aa2158e18dc41826d0ba619e5f2731e5b9fa4c458af99.js
/var/www/discourse/lib/tasks/assets.rake:287:in `size'
/var/www/discourse/lib/tasks/assets.rake:287:in `block (4 levels) in <main>'
/var/www/discourse/lib/tasks/assets.rake:178:in `block in concurrent?'
/var/www/discourse/lib/tasks/assets.rake:278:in `block (3 levels) in <main>'
/var/www/discourse/lib/tasks/assets.rake:269:in `each'
/var/www/discourse/lib/tasks/assets.rake:269:in `block (2 levels) in <main>'
/var/www/discourse/lib/tasks/assets.rake:178:in `concurrent?'
/var/www/discourse/lib/tasks/assets.rake:266:in `block in <main>'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rake-13.0.3/exe/rake:27:in `<top (required)>'
/usr/local/bin/bundle:23:in `load'
/usr/local/bin/bundle:23:in `<main>'
Tasks: TOP => assets:precompile
(See full trace by running task with --trace)
Docker Manager: FAILED TO UPGRADE

Haben Sie eine Idee? Die Website ist dadurch offline. Danke.

Das ist etwas beunruhigend. Ist dein Speicherplatz voll oder ähnliches?

Hallo, nein – auf dem Host sind 70 GB frei. Nur 1 % der Inodes werden verwendet.

Ich habe angenommen, dass der Fehler ‘No such file or directory’ nur eine Nebenwirkung davon war:

Parse error at _vendor-b631d4ab0775fdbe453aa2158e18dc41826d0ba619e5f2731e5b9fa4c458af99.js:1850,34
        return Handlebars.compile(...arguments);
                                  ^
ERROR: Unexpected token: punc «.»

Diese Datei existiert definitiv:

root@redmine:/var/discourse# ./launcher enter app
ls -al ls -al root@xxxxx-app:/var/www/discourse# ls -al /var/www/discourse/public/assets/vendor-b631d4ab0775fdbe453aa2158e18dc41826d0ba619e5f2731e5b9fa4c458af99.js
-rw-r--r-- 1 discourse www-data 659907 Jan 22 04:55 /var/www/discourse/public/assets/vendor-b631d4ab0775fdbe453aa2158e18dc41826d0ba619e5f2731e5b9fa4c458af99.js

Ich bin mir nicht sicher. Ich habe gerade meine beiden selbst gehosteten Instanzen ohne Probleme aktualisiert.

Gibt es ungewöhnliche Plugins, Drittanbieter-Plugins oder umfangreiche Anpassungen?

Danke… absolut keine Plugins oder aufwendigen Anpassungen… es war im Grunde eine frische Installation Ende 2020, nur kleine Änderungen an den Einstellungen über die Admin-Oberfläche für Dinge wie Moderatorrechte usw. Sehr seltsam.

Leider habe ich kein Backup erstellt, bevor ich das Upgrade durchgeführt habe, obwohl ich einige automatisierte Backups von vor ein paar Tagen habe. Ich schätze, das ist vorerst mein einziger Ausweg… da ich mich nicht mit Ruby auskenne, habe ich keine Ahnung, wie ich diesen Fehler herausfinden soll.

Ah, sieht so aus, als hätte ./launcher restart app es trotz der durchgeführten Datenbank-Schema-Updates zumindest wieder online gebracht. Zuvor warf es einen 500-Fehler. Pfui!

Das sind die Inhalte im plugins-Verzeichnis. Ich gehe davon aus, dass sie mit der Core-Installation kamen, da ich keine manuell hinzugefügt habe.

root@redmine-app:/var/www/discourse# ls -al plugins/
total 12
drwxr-xr-x 22 discourse discourse 4096 Nov  4 04:54 .
drwxr-xr-x 56 discourse discourse 4096 Jan 22 04:55 ..
drwxr-xr-x 13 discourse discourse   43 Nov  4 04:54 discourse-details
drwxr-xr-x 16 discourse discourse   54 Nov  4 04:54 discourse-local-dates
drwxr-xr-x 20 discourse discourse   69 Jan 22 04:55 discourse-narrative-bot
drwxr-xr-x 11 discourse discourse   59 Nov  4 04:54 discourse-presence
drwxr-xr-x 19 discourse root      4096 Jan 22 04:43 docker_manager
drwxr-xr-x  4 discourse discourse   51 Sep 28 05:11 lazy-yt
drwxr-xr-x 25 discourse discourse   99 Nov  4 04:54 poll
drwxr-xr-x  8 discourse www-data   129 Nov  4 04:54 styleguide

Das Seitenthema ist nach dem Neustart etwas kaputt, wahrscheinlich weil die Assets noch nicht vollständig kompiliert waren. Ich frage mich, ob es einen Weg gibt, das manuell abzuschließen.

Dies ist der Abschnitt in der Vendor-JS-Datei, der Probleme verursacht:

// allow us to import this as a module
if (typeof define !== "undefined") {
  define("handlebars", ["exports"], function (__exports__) {
    // It might not be defined server side, which is OK for pretty-text
    if (typeof Handlebars !== "undefined") {
      // eslint-disable-next-line
      __exports__.default = Handlebars;
      __exports__.compile = function () {
        // eslint-disable-next-line
        return Handlebars.compile(...arguments);
      };
    }
  });

  define("handlebars-compiler", ["exports"], function (__exports__) {
    // eslint-disable-next-line
    __exports__.default = Handlebars.compile;
  });
}
;

Zeile 1850 (wo der Fehler auftritt) ist dieser Teil:

        return Handlebars.compile(...arguments);

Gibt es einen vorübergehenden Workaround, den ich hier anwenden könnte, um das Problem zu umgehen? Oder wird diese Datei bei jedem Upgrade-Versuch neu generiert? (P.S.: Nach dem Neustart denkt das System, ich hätte das Upgrade vollständig abgeschlossen, aber das Theme ist kaputt. Ich frage mich, ob ich diesen Schritt irgendwie überspringen kann oder ob ich von einem Backup wiederherstellen muss, im Grunde genommen…)

Der gesamte Abschnitt des Codes stammt aus dieser Datei:

app/assets/javascripts/handlebars-shim.js

Ich vermute, dass uglify-js return Handlebars.compile(...arguments); als Syntaxfehler interpretiert.

Was ich nicht verstehe, ist, wie das nur bei meiner Installation auftreten kann, da sich das alles im Docker-Container befindet.

Ich nehme an, es ist über diesen Commit hier gekommen? DEV: Sync up more Ember CLI features (#11790) · discourse/discourse@83347ac · GitHub

OK – also ich weiß nicht warum, aber ich habe den manuellen Upgrade-Prozess ausgeführt (git pull; ./launcher rebuild app) und es hat funktioniert.

Viele andere Aktivitäten wie PostgreSQL-Upgrades usw. wurden im Rahmen dieses manuellen Upgrades durchgeführt.

Meine Vermutung: Etwas in dem oben genannten Commit war nicht mit uglify-js oder der Rails-Version oder irgendetwas anderem im ursprünglichen Container kompatibel. Es war im Grunde ein Upgrade, das den ‘manuellen’ Upgrade-Prozess erforderte.

Da mir die Web-Admin-Oberfläche erlaubte, docker_manager und dann die Discourse-App selbst zu upgraden, ging ich davon aus, dass dies nicht notwendig sein würde (ich weiß, dass es manchmal heißt, ein Upgrade über die Web-Admin-Oberfläche sei nicht möglich und manuell durchzuführen… aber das ist in diesem Fall nicht passiert, und hätte wahrscheinlich passieren sollen…)

Trotzdem vielen Dank für deine Hilfe.

Bei mir ist das Gleiche passiert – das Web-Upgrade ist mit einem Fehler „Unexpected token: punc

Ich habe auch ein Problem bei der Ausführung dieses Updates (Web-Upgrade) :frowning:
Nach der Ausführung dieser Befehle:
cd /var/discourse
git pull
./launcher rebuild app
läuft Discourse, aber der Zugriff auf das Admin-Panel (/admin) ist nicht möglich.

Ein Ubuntu-Update hat die Funktionsweise wiederhergestellt.

In der Ankündigung hieß es, dass Sie einen Neuaufbau über die Befehlszeile durchführen müssten. Ich bin mir nicht sicher, warum die Weboberfläche nicht wusste, dass dies durchgesetzt werden muss.

Seltsamerweise habe ich gerade versucht, diese Funktionalität in der Entwicklungsumgebung zu nutzen, und sie funktioniert bei mir nicht … Das Handlebars-Objekt hat nur create(), nicht compile(), obwohl ich vielleicht auf dem Holzweg bin … Ich habe dies hier zur Sprache gebracht: Adding a bespoke raw template