上传成功了,记录没有 笔记

上传成功了,记录没有

作者开发了一套 YouTube 上传系统,其流程为顺序执行:发起会话、文件传输、获取视频 ID、验证以及创建本地记录。一个关键缺陷在于本地记录仅在验证步骤之后写入。若验证失败,异常将中断流程,导致磁盘上不存在该上传视频的本地记录。因此,重新执行上传命令时会绕过现有的文件检查,从而引发重复上传。系统文档误导性地声称重试不会造成重复,但这仅适用于内部低层重试,不适用于整个流程在失败后由外部重新运行的情况。这导致同一视频被上传了两次。在仓库的另一部分也发现了类似的缺陷:通过旧流程上传的五段视频同样缺乏对应的本地记录,使其面临重复上传的风险。作者指出,现有测试之所以通过,是因为它们未考虑异常发生后系统在磁盘上的状态。修复方案是将工作流程调整为在接收到视频 ID 后立即写入本地记录,即使该记录尚未验证。该记录随后可用于恢复验证过程,或在视频已处理时阻止进一步上传。对于那五段预先存在的视频,必须手动补填其本地记录。该核心问题可泛化至任何先创建远程资源再进行验证的操作,由此产生一个时间窗口:若在此窗口内发生失败,可能导致远程资源已创建但本地状态未记录。这种模糊性使得重试逻辑失效。解决方案强调必须在接收到标识符的瞬间即进行记录,无论后续验证结果如何。同时,所有创建资源的代码路径都必须贡献于同一套记账系统,以防止出现不可见的状态不一致。