I, [2024-11-07T08:00:56.758061 #1] INFO -- : cd /var/www/discourse & sudo -E -u discourse bundle exec rake s3:upload_assets
rake aborted!
ArgumentError: No se puede establecer dual-stack en combinación con un punto final personalizado. (ArgumentError)
raise ArgumentError, "Cannot set dual-stack in combination with a custom endpoint."
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
FAILED
--------------------
Pups::ExecError: cd /var/www/discourse & sudo -E -u discourse bundle exec rake s3:upload_assets falló con el retorno #<Process::Status: pid 3349 exit 1>
Ubicación del fallo: /usr/local/lib/ruby/gems/3.3.0/gems/pups-1.2.1/lib/pups/exec_command.rb:132:in `spawn'
exec falló con los parámetros {"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 falló con el código de salida 1
**FALLÓ EL ARRANQUE** desplácese hacia arriba y busque mensajes de error anteriores, puede haber más de uno.
./discourse-doctor puede ayudar a diagnosticar el problema.
567dc9e1f9a4e662de6024b8504915d8b6ef1ee2d9b4303af75323ba478679e4
Comenté estas líneas, lo que hace que la reconstrucción se ejecute correctamente, pero el sitio se queda atascado en la pantalla de inicio, creo que porque no puede cargar los activos. El modo seguro es lo mismo…
Mi reconstrucción con una configuración de Digital Ocean Spaces S3 comenzó a fallar con este error:
, [2024-11-07T19:09:38.615466 #1] INFO -- : cd /var/www/discourse & sudo -E -u discourse bundle exec rake s3:upload_assets
rake aborted!
ArgumentError: Cannot set dual-stack in combination with a custom endpoint. (ArgumentError)
raise ArgumentError, "Cannot set dual-stack in combination with a custom endpoint."
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-s3-1.143.0/lib/aws-sdk-s3/endpoint_provider.rb:34:in `resolve_endpoint'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-s3-1.143.0/lib/aws-sdk-s3/plugins/endpoints.rb:37:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.191.3/lib/seahorse/client/plugins/endpoint.rb:47:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.191.3/lib/aws-sdk-core/plugins/param_validator.rb:26: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'
Pero omitir la configuración a whatever hace que la compilación falle de esta manera:
I, [2024-11-07T19:15:31.060936 #1] INFO -- : cd /var/www/discourse & sudo -E -u discourse bundle exec rake s3:upload_assets
ERROR: Ensure S3 is configured in config/discourse.conf or environment vars
I, [2024-11-07T19:15:36.056204 #1] INFO -- :
Encontré esto:
y esto:
¿Quizás S3_REGION debería borrarse si se establece un endpoint aquí?
EDIT: Oops. Pensé que había buscado. Perdón, Falco.
@martin normalmente lo que hacemos aquí es proporcionar una Configuración Global para deshabilitar el comportamiento que las personas que ejecutan clones S3 incompatibles pueden habilitar para que funcione.
En mi opinión, el comportamiento actual debería seguir siendo el predeterminado, pero proporcionar interruptores para aumentar la compatibilidad.
Ver ejemplos anteriores en DISCOURSE_S3_HTTP_CONTINUE_TIMEOUT, DISCOURSE_S3_INSTALL_CORS_RULE, etc.
Ah, lo siento, fue mi error. Estos clones de S3 siempre se me escapan. De hecho, ayer tuve que solucionar este problema del endpoint personalizado con Minio. Creo que la solución aquí puede ser simplemente no usar nunca dualstack si se ha establecido DISCOURSE_S3_ENDPOINT, ya que son incompatibles, y todo el mundo aquí parece estar usándolo.
¡Gracias por la rápida solución! He vuelto al negocio.
¡Gracias por la lúcida explicación, Rafael!
¡Eso es porque hay muchas cosas que tener en cuenta! Y las pruebas de especificación, creo, requerirían esas molestas stub_request que sé que odio escribir.
Para que lo sepas, eso me parece correcto. Y probablemente podrías escribir pruebas para eso que no requirieran stubs para stub_request.
Eso me sugiere que las especificaciones no son lo suficientemente amplias para capturar todos los casos de uso reales y que se están aprobando cambios que no deberían haberlo hecho.