J’utilise le stockage d’objets minio pour mon s3 et j’obtiens cette erreur :
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
Erreur lors du calcul du rapport `storage_stats` : méthode `start_with?' indéfinie pour 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 et @merefield, SiteSetting.enable_s3_uploads est-il vrai pour vous deux ? Si c’est le cas, nous devrions simplement utiliser SiteSetting.s3_region :
Qu’en est-il de SiteSetting::Upload.enable_s3_uploads, qu’est-ce que cela vous donne ?
Je pourrais faire une correction comme celle-ci, en utilisant la navigation sécurisée pour s3_region :
def self.use_dualstack_endpoint
SiteSetting.Upload.s3_endpoint.blank? && !SiteSetting.Upload.s3_region&.start_with?("cn-")
end
Mais je veux comprendre pourquoi SiteSetting.Upload.s3_region est vide pour vous.
OK, c’est de plus en plus étrange, il y a deux paramètres ?
J’utilise S3 pour les sauvegardes mais pas pour les téléversements (ce qui est un choix valide et ce qui est le cas depuis des années ?)
L’activation des deux n’est pas imposée par l’interface.
Je n’ai pas changé de paramètres depuis des années.
Ainsi SiteSetting::Upload.s3_region est vide car je ne l’utilise pas ?
Bien que, comme note annexe, les téléversements devraient être regroupés avec les sauvegardes de toute façon, mais SiteSetting.s3_region devrait suffire pour cela ?
Non. C’est ça le problème, j’en suis sûr. Ils utilisent S3 pour les sauvegardes, mais pas pour les téléchargements, ce qui est une configuration assez courante pour les auto-hébergeurs. Il est facile de configurer les sauvegardes S3, et cela ne nécessite pas de CDN ni de modifier le YML pour télécharger les actifs à précompiler.
Il est vide parce qu’ils n’utilisent pas S3 pour les téléchargements.
J’ai la même chose… je me suis connecté à mon fournisseur de stockage pour vérifier si j’avais payé la facture, et je l’ai fait.
Pourquoi un changement aussi radical a-t-il été appliqué sans aucune annonce ?
Devons-nous maintenant tout saisir dans app.yml ?
Pourquoi tous les paramètres ont-ils été supprimés du backend d’administration ? Comment pouvons-nous récupérer ces paramètres ? Je l’ai configuré il y a des années et je n’ai aucune idée de quelle est ma clé ou mon secret, et je ne suis même pas sûr de pouvoir le récupérer sans réinitialiser la clé (ce qui affecterait d’autres services pour lesquels j’utilise les mêmes points de terminaison s3…)
Je pense que les paramètres sont toujours là dans l’interface utilisateur (emplacement de sauvegarde, fréquence, compartiment S3, etc.), cela ne fonctionne tout simplement plus comme avant.
Je ne pense pas qu’il s’agisse d’un changement fonctionnel intentionnel, c’est juste cassé ?
Il devrait certainement toujours être possible de sauvegarder sur S3 sans avoir à stocker les téléchargements sur S3 - ce sont deux cas d’utilisation distincts, bien que quelque peu alignés…
Parce qu’il n’était pas censé casser quoi que ce soit, mais le code s3 doit prendre en charge un grand nombre de cas limites, et à moins que vous n’ayez écrit ce code ou prêté attention à son développement au fil des ans, il est assez difficile d’intervenir et de voir à quel point le problème est important.
Désolé à tous, j’étais absent pour cause de maladie pendant quelques jours. Ceci devrait résoudre le problème :
J’ai essayé ceci localement avec les téléchargements S3 désactivés et les sauvegardes S3 activées avant et après la correction, j’ai pu reproduire la même erreur puis la résoudre.