备份上传到 S3 在 scaleway 上失败(分段上传)

正在运行 2.6.1 稳定版,使用 S3 克隆(Scaleway)。日志如下:

[2021-01-30 09:52:59] 正在上传归档...
[2021-01-30 09:55:36] 异常:中止分片上传失败:指定的分片上传不存在。上传 ID 可能无效,或者该分片上传可能已被中止或完成。
[2021-01-30 09:55:36] /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/aws-sdk-s3-1.83.2/lib/aws-sdk-s3/multipart_file_uploader.rb:94:in `rescue in abort_upload'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/aws-sdk-s3-1.83.2/lib/aws-sdk-s3/multipart_file_uploader.rb:82:in `abort_upload'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/aws-sdk-s3-1.83.2/lib/aws-sdk-s3/multipart_file_uploader.rb:78:in `upload_parts'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/aws-sdk-s3-1.83.2/lib/aws-sdk-s3/multipart_file_uploader.rb:51:in `upload'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/aws-sdk-s3-1.83.2/lib/aws-sdk-s3/file_uploader.rb:38:in `upload'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/aws-sdk-s3-1.83.2/lib/aws-sdk-s3/customizations/object.rb:342:in `upload_file'
/var/www/discourse/lib/backup_restore/s3_backup_store.rb:39:in `upload_file'
/var/www/discourse/lib/backup_restore/backuper.rb:301:in `upload_archive'
/var/www/discourse/lib/backup_restore/backuper.rb:41:in `run'
/var/www/discourse/script/spawn_backup_restore.rb:9:in `backup'
/var/www/discourse/script/spawn_backup_restore.rb:34:in `block in <main>'
/var/www/discourse/script/spawn_backup_restore.rb:4:in `fork'
/var/www/discourse/script/spawn_backup_restore.rb:4:in `<main>'
[2021-01-30 09:55:36] 正在删除旧备份...
[2021-01-30 09:55:36] 正在清理内容...
[2021-01-30 09:55:36] 正在从本地存储中移除归档...
[2021-01-30 09:55:36] 正在移除 '.tar' 残留文件...
[2021-01-30 09:55:36] 正在将备份标记为完成...
[2021-01-30 09:55:36] 正在刷新磁盘统计信息...

我在其他几台服务器上拥有相同的配置,备份运行正常(尽管备份大小明显更小,因此分片上传可能不是影响因素)。看起来它们也支持分片上传:Managing multipart uploads | Scaleway Documentation

我也遇到同样的问题,使用 Scaleway S3 时也是如此:frowning:

我的首次备份在 9 天前失败:

EXCEPTION: multipart upload failed:
Your request was not formed properly;
Your request was not formed properly

之后,每隔一两天就会出现:

EXCEPTION: failed to abort multipart upload:
The specified multipart upload does not exist.
The upload ID might be invalid, or
the multipart upload might have been aborted or completed.

@Falco 我们该怎么做才能弄清楚问题出在哪里?
谢谢

昨天已回复此问题。请联系 Scaleway。

完成
但他们的支持团队需要更多信息:slight_smile:
他们需要一份部件清单,以便查看每个部件是收到响应还是错误消息。

在 AWS SDK 中是否有启用日志记录(如 HTTP 请求)的方法?

谢谢

今天真是他们的幸运日,因为 Discourse 是开源的,他们可以看到具体发生了什么!

回溯信息显示错误来自:

即:

这是对 SDK 中此方法的调用:

根据文档,当文件大小超过 15MB 时,默认将使用分块上传(MultiPart upload)。

查看源代码,似乎使用的是此方法:

而第 74 行出现了错误。

又恢复正常了,而且没有任何改动::grimacing:
现在有 7/10 成功了。

好消息。针对事实上的 S3 规范进行实现的好处是,他们会在其端进行修复,我们无需进行任何更改。

不幸的是,它仍然给我同样的错误::confused:
希望他们还没有完全推出修复。

备份进程现已 100% 成功!
该问题对我而言已“关闭”。