跳到主要内容

文件本地编辑V2提案No.1

· 阅读需 4 分钟
何丰良
技术支持人员

本提案是对《文件本地编辑V1提案》的补充。

什么是文件本地编辑

在网盘客户端中直接点击文件自动下载到缓存位置,并使用本地默认程序打开,本地编辑完成后可自动上传到网盘中。

本地编辑

问题分析

问题现象

最近我们收到用户反馈:“本地编辑中连续保存.xlsx格式文件时自动上传的文件低几率损坏现象。”

我们非常重视文件数据可靠性,立即进行确认并讨论解决方案。

问题原因

文件本地编辑提案V1中,我们说明了文件的上传时机:

文件以读写方式本地打开后,网盘会一直监控文件的保存时间,如果发生变更则自动上传。

文件上传过程是先创建文件任务,加入上传队列,然后再执行上传,这是一个异步操作。当上传任务创建成功后,文件内容随时可能被用户保存,这就导致了上传任务的文件信息和实际上传的文件内容不一致,可能造成最终文件大小或内容信息错误。

由于用户保存文件的行为是不定时发生的,因此不能假设任意时间文件数据是完整可靠的,极端情况下,文件正在写入过程中也可能被上传,这有几率会造成上传的文件不完整。

发布时间

在本提案中我们使用一种对本地编辑文件进行“静止状态”探测的方法,保证上传文件内容的可靠性。

解决方法

在以上的情景分析中,我们发现问题的根本原因就是文件上传同时用户对其进行保存。如果上传过程中文件处于一种"静止"状态(用户不更新),那么整个上传流程必然是安全可靠的。

image-20220718180845787

探测静止状态

建立静止的文件,需要对已保存文件进行静止探测,这需要两个固定时间段(8秒/时间段)才能得出结论。

“探测点1”确认文件内容已保存。

“探测点2”确认文件保存后处于静止状态,认为文件在当前时段是静止的,距上次保存后一段时间没有再发生过保存行为。

创建文件快照

文件静止状态确认后,将文件复制到临时目录,复制完成后,需要检测快照复制期间,原文件是否被再次保存,如果已保存则放弃快照。如果没有保存则保留快照,并将快照加入上传队列,由于快照是静止的,所以上传内容的可靠得以保证。

上传静止文件

静止文件快照加入上传后,无论上传结果成功或失败,完成后直接删除即可。

相关阅读

《文件本地编辑提案V1》