Hola a todos,
Hemos estado ejecutando una instancia autoalojada de Discourse en https://discourse.bokeh.org durante varios años. En términos generales, ha sido extremadamente estable y ha requerido casi ningún esfuerzo de mantenimiento; en particular, realizar actualizaciones suele ser un proceso sin incidentes que se completa perfectamente sin ningún problema.
Sin embargo, hoy, después de una actualización a la versión 2.7beta7 (que pareció completarse sin problemas), nuestro sitio ha colapsado por completo. Funcionó a trompicones durante un tiempo con páginas mal renderizadas y errores en la consola de JS, pero después de intentar un retorno a la versión anterior, la interfaz de usuario quedó completamente inutilizable. Al iniciar sesión en el droplet, también he intentado lo siguiente sin éxito:
Reconstrucción
./launcher rebuild app
Esto ha fallado de varias maneras en varios intentos.
Discourse Doctor
./discourse-doctor
Restauración
./launcher enter app
discourse restore <archivo de respaldo>
Esto falló.
Borrado total
También intenté hacer un “borrado” y luego restaurar:
./launcher stop app
./launcher destroy app
rm -r /var/discourse/shared/standalone/
Después de esto, al menos pude lograr que una reconstrucción tuviera éxito, lo que llevó a un estado de “instalación nueva”, por ejemplo: “¡Felicidades, has instalado Discourse!”.
Así que ahora he intentado ejecutar discourse restore nuevamente, pero esto también ha fallado.
EXCEPCIÓN: 1 publicación no se ha vuelto a mapear a la nueva URL de carga en S3. La migración a S3 falló para la base de datos 'default'.
/var/www/discourse/lib/file_store/to_s3_migration.rb:131:in `raise_or_log'
/var/www/discourse/lib/file_store/to_s3_migration.rb:86:in `migration_successful?'
/var/www/discourse/lib/file_store/to_s3_migration.rb:357:in `migrate_to_s3'
/var/www/discourse/lib/file_store/to_s3_migration.rb:65:in `migrate'
/var/www/discourse/lib/file_store/s3_store.rb:240:in `copy_from'
/var/www/discourse/lib/backup_restore/uploads_restorer.rb:62:in `restore_uploads'
/var/www/discourse/lib/backup_restore/uploads_restorer.rb:44:in `restore'
/var/www/discourse/lib/backup_restore/restorer.rb:62:in `run'
script/discourse:145:in `restore'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/thor-1.1.0/lib/thor/command.rb:27:in `run'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/thor-1.1.0/lib/thor/invocation.rb:127:in `invoke_command'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/thor-1.1.0/lib/thor.rb:392:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/thor-1.1.0/lib/thor/base.rb:485:in `start'
script/discourse:286:in `'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.7/lib/bundler/cli/exec.rb:63:in `load'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.7/lib/bundler/cli/exec.rb:63:in `kernel_load'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.7/lib/bundler/cli/exec.rb:28:in `run'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.7/lib/bundler/cli.rb:494:in `exec'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.7/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.7/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.7/lib/bundler/vendor/thor/lib/thor.rb:392:in `dispatch'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.7/lib/bundler/cli.rb:30:in `dispatch'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.7/lib/bundler/vendor/thor/lib/thor/base.rb:485:in `start'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.7/lib/bundler/cli.rb:24:in `start'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.7/exe/bundle:49:in `block in '
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.7/lib/bundler/friendly_errors.rb:130:in `with_friendly_errors'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.7/exe/bundle:37:in `'
/usr/local/bin/bundle:23:in `load'
/usr/local/bin/bundle:23:in `'
Intentando volver a la versión anterior...
Volviendo a la versión anterior...
Limpieza de archivos...
Eliminando funciones del esquema discourse_functions...
Eliminando el directorio temporal '/var/www/discourse/tmp/restores/default/2021-04-23-235404'...
Marcando la restauración como finalizada...
Notificando a 'system' sobre el final de la restauración...
¡Finalizado!
[FALLÓ]
Lo extraño es que, durante la restauración, el sitio parecía estar volviendo a la normalidad, mostrando contenido antiguo. Luego ocurrió el fallo y ahora no se muestra nada; las cuentas han desaparecido, etc.
Realmente necesito cualquier orientación o sugerencia. Tenemos copias de seguridad diarias que llegan hasta una semana atrás (y más atrás en Glacier si es necesario). Eliminamos una categoría no utilizada hace unos días; ¿podría eso ser la causa del problema? Intentaré con una copia de seguridad más antigua para ver, pero cualquier indicación sobre un proceso de restauración infalible será bienvenido.