Rake上传:migrate_to_s3运行时间无限

当我运行该命令时,出现以下输出:

Migrating uploads to S3 for 'default'...
Uploading files to S3...
 - Listing local files
 => 23 files
 - Listing S3 files
. => 94 files
 - Syncing files to S3
.......................
Updating the URLs in the database...
Removing old optimized images...
Flagging all posts containing lightboxes for rebake...
4 posts were flagged for a rebake
4 posts still require rebaking and will be rebaked during regular job
Done!
Migrating uploads to S3 for 'default'...
Uploading files to S3...
 - Listing local files
 => 23 files
 - Listing S3 files
. => 94 files
 - Syncing files to S3
.......................
Updating the URLs in the database...
Removing old optimized images...
Flagging all posts containing lightboxes for rebake...
4 posts were flagged for a rebake
4 posts still require rebaking and will be rebaked during regular job
Done!
Migrating uploads to S3 for 'default'...
Uploading files to S3...
 - Listing local files
 => 23 files
 - Listing S3 files
. => 94 files
 - Syncing files to S3
.......................
Updating the URLs in the database...
Removing old optimized images...
Flagging all posts containing lightboxes for rebake...
4 posts were flagged for a rebake
4 posts still require rebaking and will be rebaked during regular job
Done!
Migrating uploads to S3 for 'default'...
Uploading files to S3...
 - Listing local files
 => 23 files
 - Listing S3 files
. => 94 files
 - Syncing files to S3
.......................

然后它就一直循环下去。

最终我按下了 Ctrl-C,并执行了 rake posts:rebake,该命令正常工作。

随后出于好奇,我再次尝试了 rake uploads:migrate_to_s3 命令,结果与上述完全相同(输出一致,同样陷入无限循环)。

我不确定发生了什么,也不确定这是否是一个问题,但想报告一下。有什么建议吗?

我可以确认这一点。

我构建了一个新镜像,其中设置了 DISCOURSE_S3_XXX 变量以启用 S3 上传,这是在原始数据库迁移时进行的。我本以为这样可以从一开始就将所有图片存储在 S3 上,但遗憾的是,在尝试将备份恢复到 S3 时失败了。

随后,我尝试运行 rake uploads:migrate_to_s3(在命令行中设置所有环境变量),结果陷入了 OP 中描述的无限循环。

接着,我尝试在命令行中执行恢复操作,并在命令中一并传入所有 DISCOURSE_S3 设置。

我原以为这样之后就可以进行备份和恢复了,但事实并非如此。从 Web 界面恢复失败;从命令行恢复时,如果不传入所有 S3 参数,也会失败。

因此,似乎如果您要恢复包含 S3 上传内容的备份,必须通过命令行执行恢复操作,并在命令中一并传入 S3 设置。

无法从用户界面(UX)恢复包含 S3 上传内容的备份,这看起来像是一个缺陷。

给接下来尝试执行恢复操作的朋友 :wink: 以下是将命令行选项全部放在同一行并与恢复命令一起使用的确切语法,正如 @pfaffman 所建议的……其实就是先定义全部四个变量,然后在最后执行恢复命令。

DISCOURSE_S3_BUCKET=my-forum-storage DISCOURSE_S3_REGION=us-east-1 DISCOURSE_S3_ACCESS_KEY_ID=asdasdasdasdasdadsasdas DISCOURSE_S3_SECRET_ACCESS_KEY=aasdasdasdasdasdadsasdasasdasdasdasd discourse restore my-forums-2020-04-11-232922-v20200408121834.tar.gz

@pnoeric 无限循环问题已在 FIX: Infinite loop in migrate_to_s3 rake task · discourse/discourse@baae0e7 · GitHub 中修复。

@pfaffman 该问题应在 FIX: Restore to S3 didn't work without env variables · discourse/discourse@c6b411f · GitHub 中修复。

太好了!非常感谢。(有时候一个 :heart: 是不够的。)

是的,我也附议!感谢你们的及时回复,非常感激。E