Das Backup ist fehlgeschlagen.
Hier ist das Protokoll:
undefined method `start_with?' for nil /var/www/discourse/app/models/site_setting.rb:172:in `use_dualstack_endpoint’
/var/www/discourse/lib/s3_helper.rb:269:in `s3_options' /var/www/discourse/lib/backup_restore/s3_backup_store.rb:14:in `initialize’
/var/www/discourse/lib/backup_restore/backup_store.rb:17:in `new'`
nach einem sehr kürzlichen Rebuild auf den neuesten Stand.
In meinem Fall wird S3 mit einem Standard-AWS-Bucket gehostet.
Ich verwende Minio Objektspeicher für mein S3 und erhalte diesen Fehler:
rake aborted!
Aws::S3::Errors::Http504Error: Aws::S3::Errors::Http504Error (Aws::S3::Errors::Http504Error)
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.191.3/lib/seahorse/client/plugins/raise_response_errors.rb:17:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-s3-1.143.0/lib/aws-sdk-s3/plugins/sse_cpk.rb:24:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-s3-1.143.0/lib/aws-sdk-s3/plugins/dualstack.rb:21:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-s3-1.143.0/lib/aws-sdk-s3/plugins/accelerate.rb:43:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.191.3/lib/aws-sdk-core/plugins/checksum_algorithm.rb:111:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.191.3/lib/aws-sdk-core/plugins/jsonvalue_converter.rb:16:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.191.3/lib/aws-sdk-core/plugins/idempotency_token.rb:19:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.191.3/lib/aws-sdk-core/plugins/param_converter.rb:26:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.191.3/lib/seahorse/client/plugins/request_callback.rb:89:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.191.3/lib/aws-sdk-core/plugins/response_paging.rb:12:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.191.3/lib/seahorse/client/plugins/response_target.rb:24:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.191.3/lib/seahorse/client/request.rb:72:in `send_request'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-s3-1.143.0/lib/aws-sdk-s3/client.rb:11285:in `list_objects_v2'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-s3-1.143.0/lib/aws-sdk-s3/bucket.rb:1304:in `block (2 levels) in objects'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.191.3/lib/aws-sdk-core/plugins/user_agent.rb:28:in `feature'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-s3-1.143.0/lib/aws-sdk-s3/bucket.rb:1303:in `block in objects'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.191.3/lib/aws-sdk-core/resources/collection.rb:101:in `each'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.191.3/lib/aws-sdk-core/resources/collection.rb:101:in `each'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.191.3/lib/aws-sdk-core/resources/collection.rb:101:in `block in non_empty_batches'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.191.3/lib/aws-sdk-core/resources/collection.rb:52:in `each'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.191.3/lib/aws-sdk-core/resources/collection.rb:52:in `each'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.191.3/lib/aws-sdk-core/resources/collection.rb:52:in `block in each'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.191.3/lib/aws-sdk-core/resources/collection.rb:58:in `each'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.191.3/lib/aws-sdk-core/resources/collection.rb:58:in `each'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.191.3/lib/aws-sdk-core/resources/collection.rb:58:in `each'
/var/www/discourse/lib/tasks/s3.rake:14:in `map'
/var/www/discourse/lib/tasks/s3.rake:14:in `existing_assets'
/var/www/discourse/lib/tasks/s3.rake:210:in `block in <main>'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/exe/rake:27:in `<top (required)>'
/usr/local/bin/bundle:25:in `load'
/usr/local/bin/bundle:25:in `<main>'
Tasks: TOP => s3:expire_missing_assets
(See full trace by running task with --trace)
I, [2024-11-11T08:02:51.942337 #1] INFO -- : Checking for stale S3 assets...
I, [2024-11-11T08:02:51.944197 #1] INFO -- : Terminating async processes
I, [2024-11-11T08:02:51.944334 #1] INFO -- : Sending INT to HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/13/bin/postmaster -D /etc/postgresql/13/main pid: 39
I, [2024-11-11T08:02:51.944432 #1] INFO -- : Sending TERM to exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf pid: 107
2024-11-11 08:02:51.944 UTC [39] LOG: received fast shutdown request
107:signal-handler (1731312171) Received SIGTERM scheduling shutdown...
2024-11-11 08:02:51.945 UTC [39] LOG: aborting any active transactions
2024-11-11 08:02:51.949 UTC [39] LOG: background worker "logical replication launcher" (PID 54) exited with exit code 1
2024-11-11 08:02:51.950 UTC [49] LOG: shutting down
107:M 11 Nov 2024 08:02:51.960 # User requested shutdown...
107:M 11 Nov 2024 08:02:51.960 * Saving the final RDB snapshot before exiting.
2024-11-11 08:02:52.047 UTC [39] LOG: database system is shut down
107:M 11 Nov 2024 08:02:52.207 * DB saved on disk
107:M 11 Nov 2024 08:02:52.208 # Redis is now ready to exit, bye bye...
FAILED
--------------------
Pups::ExecError: cd /var/www/discourse && sudo -E -u discourse bundle exec rake s3:expire_missing_assets failed with return #<Process::Status: pid 3550 exit 1>
Location of failure: /usr/local/lib/ruby/gems/3.3.0/gems/pups-1.2.1/lib/pups/exec_command.rb:132:in `spawn'
exec failed with the params {"cd"=>"$home", "cmd"=>["sudo -E -u discourse bundle exec rake s3:upload_assets", "sudo -E -u discourse bundle exec rake s3:expire_missing_assets"]}
bootstrap failed with exit code 1
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.
./discourse-doctor may help diagnose the problem.
4f601885ffad64bcd29f6dbd06df1f0f86ad301341d40e752df7447809a32eff
Fehler bei der Berechnung des Berichts `storage_stats`: undefined method `start_with?' for nil
/var/www/discourse/app/models/site_setting.rb:172:in `use_dualstack_endpoint'
/var/www/discourse/lib/s3_helper.rb:269:in `s3_options'
@hosna und @merefield, ist SiteSetting.enable_s3_uploads bei euch beiden auf true gesetzt? Wenn ja, sollten wir einfach SiteSetting.s3_region verwenden:
Was ist mit SiteSetting::Upload.enable_s3_uploads, was liefert das bei euch?
Ich könnte eine Korrektur wie diese vornehmen, die die sichere Navigation für s3_region verwendet:
def self.use_dualstack_endpoint
SiteSetting.Upload.s3_endpoint.blank? && !SiteSetting.Upload.s3_region&.start_with?("cn-")
end
Aber ich möchte verstehen, warum SiteSetting.Upload.s3_region bei euch leer ist.
Nein. Das ist das Problem, da bin ich mir ziemlich sicher. Sie verwenden S3 für Backups, aber nicht für Uploads, was eine ziemlich gängige Konfiguration für Self-Hosters ist. Es ist einfach, S3-Backups zu konfigurieren, und erfordert weder ein CDN noch eine Änderung der YML, um Assets für die Kompilierung hochzuladen.
Es ist leer, weil sie S3 nicht für Uploads verwenden.
Ich habe dasselbe Problem. Ich habe mich bei meinem Speicheranbieter angemeldet, um zu prüfen, ob ich die Rechnung bezahlt habe, und das habe ich.
Warum wurde eine solche disruptive Änderung ohne Ankündigung vorgenommen?
Sollen wir jetzt alle Details in app.yml eingeben?
Warum wurden alle Einstellungen aus dem Admin-Backend entfernt? Wie können wir diese Einstellungen wiederherstellen? Ich habe dies vor Jahren einmal eingerichtet und habe keine Ahnung, was mein Schlüssel oder mein Geheimnis ist, und ich bin mir nicht einmal sicher, ob ich dies abrufen kann, ohne den Schlüssel zurückzusetzen (was andere Dienste beeinträchtigen würde, für die ich dieselben S3-Endpunkte verwende).
Ich glaube, die Einstellungen sind immer noch in der Benutzeroberfläche vorhanden (Backup-Speicherort, Häufigkeit, S3-Bucket usw.), sie funktionieren nur nicht mehr wie zuvor.
Ich glaube nicht, dass dies eine beabsichtigte funktionale Änderung ist, sondern dass sie einfach kaputt ist?
Es sollte doch sicherlich noch möglich sein, ein Backup nach S3 zu erstellen, ohne Uploads in S3 speichern zu müssen – dies sind zwei getrennte, wenn auch teilweise zusammenhängende Anwendungsfälle …
Da sie nichts kaputt machen sollte, aber der S3-Code eine ganze Reihe von Sonderfällen unterstützen muss, und es ziemlich schwierig ist, hineinzuspringen und zu sehen, wie groß das Problem wirklich ist, es sei denn, Sie haben diesen Code geschrieben oder seine Entwicklung im Laufe der Jahre verfolgt.
Entschuldigung allerseits, ich war ein paar Tage krank. Das sollte das Problem beheben:
Ich habe dies lokal mit deaktivierten S3-Uploads und aktivierten S3-Backups vor und nach der Korrektur ausprobiert. Ich konnte denselben Fehler reproduzieren und ihn dann beheben.