Errore durante il caricamento del backup su B2

Sto riscontrando problemi con il backup della mia istanza Discourse, l’istanza è configurata per caricare su B2 di Backblaze.

Log degli errori:

Making sure archive does not already exist...
Creating empty archive...
Archiving data dump...
Archiving uploads...
Skipping uploads stored on S3.
Removing tmp '/var/www/discourse/tmp/backups/default/2026-01-16-151337' directory...
Gzipping archive, this may take a while...
Uploading archive...
EXCEPTION: failed to abort multipart upload: SSL_read: unexpected eof while reading. Multipart upload failed: Checksum Type mismatch occurred, expected checksum type: CRC32, actual checksum type: null; Checksum Type mismatch occurred, expected checksum type: CRC32, actual checksum type: null; Checksum Type mismatch occurred, expected checksum type: CRC32, actual checksum type: null; Checksum Type mismatch occurred, expected checksum type: CRC32, actual checksum type: null; Checksum Type mismatch occurred, expected checksum type: CRC32, actual checksum type: null; Checksum Type mismatch occurred, expected checksum type: CRC32, actual checksum type: null; Checksum Type mismatch occurred, expected checksum type: CRC32, actual checksum type: null; Checksum Type mismatch occurred, expected checksum type: CRC32, actual checksum type: null; Checksum Type mismatch occurred, expected checksum type: CRC32, actual checksum type: null; Checksum Type mismatch occurred, expected checksum type: CRC32, actual checksum type: null
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-s3-1.182.0/lib/aws-sdk-s3/multipart_file_uploader.rb:103:in `rescue in abort_upload'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-s3-1.182.0/lib/aws-sdk-s3/multipart_file_uploader.rb:90:in `abort_upload'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-s3-1.182.0/lib/aws-sdk-s3/multipart_file_uploader.rb:86:in `upload_parts'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-s3-1.182.0/lib/aws-sdk-s3/multipart_file_uploader.rb:59:in `upload'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-s3-1.182.0/lib/aws-sdk-s3/file_uploader.rb:42:in `block in upload'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.227.0/lib/aws-sdk-core/plugins/user_agent.rb:90:in `metric'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-s3-1.182.0/lib/aws-sdk-s3/file_uploader.rb:40:in `upload'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-s3-1.182.0/lib/aws-sdk-s3/customizations/object.rb:477:in `block in upload_file'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.227.0/lib/aws-sdk-core/plugins/user_agent.rb:90:in `metric'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-s3-1.182.0/lib/aws-sdk-s3/customizations/object.rb:476:in `upload_file'
/var/www/discourse/lib/backup_restore/s3_backup_store.rb:48:in `upload_file'
/var/www/discourse/lib/backup_restore/backuper.rb:351:in `upload_archive'
/var/www/discourse/lib/backup_restore/backuper.rb:41:in `run'
script/discourse:115:in `backup'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/thor-1.4.0/lib/thor/command.rb:28:in `run'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/thor-1.4.0/lib/thor/invocation.rb:127:in `invoke_command'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/thor-1.4.0/lib/thor.rb:538:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/thor-1.4.0/lib/thor/base.rb:584:in `start'
script/discourse:397:in `\u003ctop (required)\u003e'
/usr/local/lib/ruby/gems/3.3.0/gems/bundler-2.6.4/lib/bundler/cli/exec.rb:59:in `load'
/usr/local/lib/ruby/gems/3.3.0/gems/bundler-2.6.4/lib/bundler/cli/exec.rb:59:in `kernel_load'
/usr/local/lib/ruby/gems/3.3.0/gems/bundler-2.6.4/lib/bundler/cli/exec.rb:23:in `run'
/usr/local/lib/ruby/gems/3.3.0/gems/bundler-2.6.4/lib/bundler/cli.rb:452:in `exec'
/usr/local/lib/ruby/gems/3.3.0/gems/bundler-2.6.4/lib/bundler/vendor/thor/lib/thor/command.rb:28:in `run'
/usr/local/lib/ruby/gems/3.3.0/gems/bundler-2.6.4/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
/usr/local/lib/ruby/gems/3.3.0/gems/bundler-2.6.4/lib/bundler/vendor/thor/lib/thor.rb:538:in `dispatch'
/usr/local/lib/ruby/gems/3.3.0/gems/bundler-2.6.4/lib/bundler/cli.rb:35:in `dispatch'
/usr/local/lib/ruby/gems/3.3.0/gems/bundler-2.6.4/lib/bundler/vendor/thor/lib/thor/base.rb:584:in `start'
/usr/local/lib/ruby/gems/3.3.0/gems/bundler-2.6.4/lib/bundler/cli.rb:29:in `start'
/usr/local/lib/ruby/gems/3.3.0/gems/bundler-2.6.4/exe/bundle:28:in `block in \u003ctop (required)\u003e'
/usr/local/lib/ruby/gems/3.3.0/gems/bundler-2.6.4/lib/bundler/friendly_errors.rb:117:in `with_friendly_errors'
/usr/local/lib/ruby/gems/3.3.0/gems/bundler-2.6.4/exe/bundle:20:in `\u003ctop (required)\u003e'
/usr/local/bin/bundle:25:in `load'
/usr/local/bin/bundle:25:in `\u003cmain\u003e'
Deleting old backups...
Cleaning stuff up...
Removing archive from local storage...
Removing '.tar' leftovers...
Marking backup as finished...
Notifying 'system' of the end of the backup...
Finished!
[FAILED]

Ha funzionato in precedenza?

Sì, ha funzionato fino a circa metà dicembre.

Presumendo che abbia smesso di funzionare dopo un aggiornamento, sai dirmi la versione in cui funzionava (conoscere il nome del file dell’ultimo backup riuscito sarebbe d’aiuto) e la versione a cui sei arrivato ora?

Proverò a trovare i vecchi file, stavo facendo un po’ di pulizia e ho cancellato prima di controllare :man_facepalming:t2:.

So che questo \v20251209012613\\ stava già fallendo. Proverò a recuperare i file più vecchi per vedere quando ha smesso di funzionare.

Ho appena fatto funzionare backblaze su una nuova installazione, e a quanto pare stai usando una versione più vecchia di Discourse: la versione di ruby nello stack trace è 3.3.0 mentre sulla mia è 3.4.0. Non so se farebbe la differenza, dato che le versioni delle gem aws-sdk-core e aws-sdk-s3 sembrano essere le stesse, ma ho pensato che potesse valere la pena segnalarlo.

Ho riprovato e ho ottenuto lo stesso errore.

Configurazione:

  AWS_REQUEST_CHECKSUM_CALCULATION: WHEN_REQUIRED
  AWS_RESPONSE_CHECKSUM_VALIDATION: WHEN_REQUIRED
  DISCOURSE_USE_S3: true
  DISCOURSE_S3_REGION: "us-west-004"
  DISCOURSE_S3_INSTALL_CORS_RULE: false
  DISCOURSE_S3_CONFIGURE_TOMBSTONE_POLICY: false
  DISCOURSE_S3_ENDPOINT: 'https://s3.us-west-004.backblazeb2.com'
  DISCOURSE_S3_ACCESS_KEY_ID: '******'
  DISCOURSE_S3_SECRET_ACCESS_KEY: '******'
  DISCOURSE_S3_CDN_URL: 'https://******3.c******a.com'
  DISCOURSE_S3_BUCKET: c******a
  DISCOURSE_S3_BACKUP_BUCKET: 'c******a/backup'
  DISCOURSE_S3_UPLOAD_BUCKET: 'c******a'
  DISCOURSE_BACKUP_LOCATION: s3

Stacktrace:

Gzipping archive, this may take a while...
Uploading archive...
EXCEPTION: failed to abort multipart upload: SSL_read: unexpected eof while reading. Multipart upload failed: Checksum Type mismatch occurred, expected checksum type: CRC32, actual checksum type: null; Checksum Type mismatch occurred, expected checksum type: CRC32, actual checksum type: null; Checksum Type mismatch occurred, expected checksum type: CRC32, actual checksum type: null; Checksum Type mismatch occurred, expected checksum type: CRC32, actual checksum type: null; Checksum Type mismatch occurred, expected checksum type: CRC32, actual checksum type: null; Checksum Type mismatch occurred, expected checksum type: CRC32, actual checksum type: null; Checksum Type mismatch occurred, expected checksum type: CRC32, actual checksum type: null; Checksum Type mismatch occurred, expected checksum type: CRC32, actual checksum type: null; Checksum Type mismatch occurred, expected checksum type: CRC32, actual checksum type: null; Checksum Type mismatch occurred, expected checksum type: CRC32, actual checksum type: null
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/aws-sdk-s3-1.182.0/lib/aws-sdk-s3/multipart_file_uploader.rb:103:in 'Aws::S3::MultipartFileUploader#abort_upload'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/aws-sdk-s3-1.182.0/lib/aws-sdk-s3/multipart_file_uploader.rb:86:in 'Aws::S3::MultipartFileUploader#upload_parts'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/aws-sdk-s3-1.182.0/lib/aws-sdk-s3/multipart_file_uploader.rb:59:in 'Aws::S3::MultipartFileUploader#upload'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/aws-sdk-s3-1.182.0/lib/aws-sdk-s3/file_uploader.rb:42:in 'block in Aws::S3::FileUploader#upload'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/aws-sdk-core-3.227.0/lib/aws-sdk-core/plugins/user_agent.rb:90:in 'Aws::Plugins::UserAgent.metric'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/aws-sdk-s3-1.182.0/lib/aws-sdk-s3/file_uploader.rb:40:in 'Aws::S3::FileUploader#upload'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/aws-sdk-s3-1.182.0/lib/aws-sdk-s3/customizations/object.rb:477:in 'block in Aws::S3::Object#upload_file'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/aws-sdk-core-3.227.0/lib/aws-sdk-core/plugins/user_agent.rb:90:in 'Aws::Plugins::UserAgent.metric'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/aws-sdk-s3-1.182.0/lib/aws-sdk-s3/customizations/object.rb:476:in 'Aws::S3::Object#upload_file'
/var/www/discourse/lib/backup_restore/s3_backup_store.rb:48:in 'BackupRestore::S3BackupStore#upload_file'
/var/www/discourse/lib/backup_restore/creator.rb:434:in 'BackupRestore::Creator#upload_archive'
/var/www/discourse/lib/backup_restore/creator.rb:41:in 'BackupRestore::Creator#run'
script/discourse:115:in 'DiscourseCLI#backup'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/thor-1.4.0/lib/thor/command.rb:28:in 'Thor::Command#run'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/thor-1.4.0/lib/thor/invocation.rb:127:in 'Thor::Invocation#invoke_command'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/thor-1.4.0/lib/thor.rb:538:in 'Thor.dispatch'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/thor-1.4.0/lib/thor/base.rb:584:in 'Thor::Base::ClassMethods#start'
script/discourse:397:in '\u003ctop (required)\u003e'
/usr/local/lib/ruby/gems/3.4.0/gems/bundler-2.6.4/lib/bundler/cli/exec.rb:59:in 'Kernel.load'
/usr/local/lib/ruby/gems/3.4.0/gems/bundler-2.6.4/lib/bundler/cli/exec.rb:59:in 'Bundler::CLI::Exec#kernel_load'
/usr/local/lib/ruby/gems/3.4.0/gems/bundler-2.6.4/lib/bundler/cli/exec.rb:23:in 'Bundler::CLI::Exec#run'
/usr/local/lib/ruby/gems/3.4.0/gems/bundler-2.6.4/lib/bundler/cli.rb:452:in 'Bundler::CLI#exec'
/usr/local/lib/ruby/gems/3.4.0/gems/bundler-2.6.4/lib/bundler/vendor/thor/lib/thor/command.rb:28:in 'Bundler::Thor::Command#run'
/usr/local/lib/ruby/gems/3.4.0/gems/bundler-2.6.4/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in 'Bundler::Thor::Invocation#invoke_command'
/usr/local/lib/ruby/gems/3.4.0/gems/bundler-2.6.4/lib/bundler/vendor/thor/lib/thor.rb:538:in 'Bundler::Thor.dispatch'
/usr/local/lib/ruby/gems/3.4.0/gems/bundler-2.6.4/lib/bundler/cli.rb:35:in 'Bundler::CLI.dispatch'
/usr/local/lib/ruby/gems/3.4.0/gems/bundler-2.6.4/lib/bundler/vendor/thor/lib/thor/base.rb:584:in 'Bundler::Thor::Base::ClassMethods#start'
/usr/local/lib/ruby/gems/3.4.0/gems/bundler-2.6.4/lib/bundler/cli.rb:29:in 'Bundler::CLI.start'
/usr/local/lib/ruby/gems/3.4.0/gems/bundler-2.6.4/exe/bundle:28:in 'block in \u003ctop (required)\u003e'
/usr/local/lib/ruby/gems/3.4.0/gems/bundler-2.6.4/lib/bundler/friendly_errors.rb:117:in 'Bundler.with_friendly_errors'
/usr/local/lib/ruby/gems/3.4.0/gems/bundler-2.6.4/exe/bundle:20:in '\u003ctop (required)\u003e'
/usr/local/bin/bundle:25:in 'Kernel#load'
/usr/local/bin/bundle:25:in '\u003cmain\u003e'
Deleting old backups...
Cleaning stuff up...
Removing archive from local storage...
Removing '.tar' leftovers...
Marking backup as finished...
Notifying 'system' of the end of the backup...
Finished!
[FAILED]