Auf der neuesten Beta-Version von Discourse, Docker-Installation, Multisite.
Ich versuche, ein Backup mit der ursprünglichen Datenbank REDACTED auf die aktuelle Datenbank db8015 wiederherzustellen. Uploads landen sowohl im Dateisystem als auch in der Datenbank in default.
Dies tritt sowohl auf, wenn die Wiederherstellung über die GUI ausgelöst wird, als auch wenn sie über die Kommandozeile mit RAILS_DB=db8015 RAILS_ENV=production script/discourse restore durchgeführt wird.
Vor dieser Zeile hat RailsMultisite::ConnectionManagement.current_db den korrekten Wert (db8015), danach ist er default.
Es scheint, als hätte diese Korrektur die Produktion irgendwie beschädigt, @sam?
Logs:
[STARTED]
'DHSupport' hat die Wiederherstellung gestartet!
Markiere Wiederherstellung als laufend...
Stelle sicher, dass /var/www/discourse/tmp/restores/db8015/2019-10-11-104940 existiert...
Archiv in tmp-Verzeichnis kopieren...
Archiv entpacken, das kann eine Weile dauern...
Keine Metadatendatei zum Extrahieren.
Metadaten validieren...
Aktuelle Version: 20191007140446
Wiederhergestellte Version: 20190908234054
Dump-Datei extrahieren...
Fehlende Funktionen im discourse_functions-Schema erstellen
Kann nicht in ein anderes Schema wiederhergestellt werden, stattdessen wird vor Ort wiederhergestellt
Nur-Lese-Modus aktivieren...
Sidekiq pausieren...
[viele irrelevante Teile gelöscht]
Theme-Cache leeren
Uploads extrahieren...
Uploads neu mappen...
'uploads/REDACTED' wird auf 'uploads/default' neu gemappt
Site-Icons optimieren...
Beiträge werden durch einen Hintergrundjob in Sidekiq neu gebacken. Bis dies abgeschlossen ist, werden fehlende Bilder angezeigt.
Sie können den Prozess beschleunigen, indem Sie manuell "rake posts:rebake_uncooked_posts" ausführen.
Den after_restore_hook ausführen...
Aufräumen...
Funktion aus dem discourse_functions-Schema entfernen
tmp-Verzeichnis '/var/www/discourse/tmp/restores/db8015/2019-10-11-104940' entfernen...
Sidekiq wieder aktivieren...
Wiederherstellung als abgeschlossen markieren...
Ich habe mich etwas mit diesem Fehler beschäftigt und möchte Sie über meine Erkenntnisse auf dem Laufenden halten. Grundsätzlich habe ich alles bestätigt, was Sie bereits gesagt haben: Der Wiederherstellungsprozess verläuft wie folgt:
Eine Workaround-Lösung wäre, hier @current_db zu verwenden, das noch den korrekten Namen enthält, anstatt RailsMultisite::ConnectionManagement.current_db. Dies löst jedoch nicht das eigentliche Problem, warum reconnect_database nicht ordnungsgemäß funktioniert.
Ich muss tiefer graben, um die Ursache des Problems zu finden.
Du hast recht. Ich habe Rake::Task["db:migrate"].invoke aus restorer.rb entfernt und habe den gesamten Prozess über eine korrekte Datenbank erhalten. Du bist mir einen Schritt voraus. Mein Plan ist es nun, in die Migrate-Aufgabe zu gehen und zu prüfen, welcher Schritt den Prozess unterbricht. Danke dafür, dass du auf _dump hingewiesen hast. Ich werde mich direkt dorthin begeben, um zu sehen, was dort im Inneren passiert.
Der Fix wurde zusammengeführt. Danke, dass du das Problem gefunden hast. Der Dump-Befehl wurde hinzugefügt, weil es ein Problem mit Multisite-Migrationen gab. Ich denke, es sollte keine Rolle spielen, welche Datenbank wir für den Struktur-Dump verwenden, da alle Multisites die gleiche Struktur haben sollten.