遇到问题过程
遇到问题过程
先说我遇到问题的全流程。
- 首先在 3.1.20 版本,我在启动应用的情况下通过 GitHub 下载了 3.1.21 版本安装包,随后安装包自动启动,停止了 3.1.20 版本运行。这时候可能是在同步还是什么的,我实在没注意。就当它在同步吧。
- 之后安装新版本的安装包。
- 启动思源,产生同步报错:input error: magic number mismatch。这个我认为是同步锁里面存的校验码。这个报错不会阻止同步,而是导致一直会上传数据,而无法完成同步。并且一次同步结束之后会立即启动下一次同步。
- 我停止了思源运行,上储存桶删除了同步锁文件,重启思源观察变化。这时候的报错变为云端同步错误,不过那边的链接点不了(毕竟不是弹出报错提示)
- 我停止了思源运行,清空了整个存储桶。之后启动思源,由思源上传整个存储桶。这时候数据正常上传。
- 之后再次同步,发现仍然存在报错。这时候我再次清空存储桶,并重置数据仓库。通过重新生成数据密钥的方式重置了数据仓库。这时候重新上传数据。
- 这时候发现上传数据仓库会一直重复这个过程。重启思源,发现这次上传正常生成了 index 等文件夹,而上一次没有。上传结束后继续重复这个过程。
- 切换新数据仓库之后重复上述重置过程,问题仍然存在。不过有趣的是每次重新上传文件数量都在减少。
进度到目前为止,已经重建了数据仓库,重建了云端存储,修复云端存储的帖子有链接吗?后续有新内容我再更新帖子,先歇一下。晚点我开个新存储桶试试。
进度更新:在通过小手段让思源忘记之前的同步错误之后,我重建数据仓库并且清空云端存储,等待多次同步完成(好像只有两次)。之后点击同步按钮,检查发现不再提示错误信息,而是显示正常的同步结果。现在尝试将思源版本又更新上去试试。
在更新思源版本之后,上传设备在启动同步时显示正常的同步结果(上传/下载 1 文件),手动触发同步也是正常的。在退出的时候又需要全部上传,并且又是两次(先全量再少几个文件)。打开其他设备同步,使用相同的仓库和密钥可以正常同步,但是需要全量上传。
另外,在本次尝试中,发现如果一个设备在启动中同步(条件可能出错),它可能忽略云端的同步锁。我在最后这次尝试中先点击了电脑退出,之后过一段时间后打开手机端。这时候发现电脑端回退到全量同步,而手机端在启动后也进入同步状态。即此时电脑端和手机端同时进入全量上传阶段。这个显然是存在问题的。于是强行停止手机同步(断网),之后电脑端又一次报错标题错误,于是认为标题错误可能由一个设备在同步中同步锁被替换(或类似原因)导致。
我累了,这里是今天的日志:siyuan.zip,这是从 20 升级到 21 前后的日志都有,实在累了。这里观察到,今天出现若干次的重复上传现象主要是获取 S3 存储为空,从而导致新一次上传。但实际上是有东西的,就在几秒前还获取到 600 多 M 的存储。这个我不知道了,又没有套 CDN,又没有缓存。
关于最后一次同步:通过手动上传启动同步,出现重复上传,之后通过关闭思源结束上传。之后去手机选择下载,出现云端数据损坏。无法下载云端数据。但是只要云端上传的循环不结束,云端数据永远都是损坏的,因为这一次上传不完整,又覆盖了上次上传的数据(尽管数据理论上一样,但是这样的循环中文件数量不一样,猜测是什么地方改变了)。
解决方案
这边的解决方案仅为个人看法,并未完全经过验证,可能存在问题。请优先从最保守的方法开始试验。
方法 1
通过更新到 3.1.22 版本解决问题。
方法 2
如果你乱搞云端储存桶导致出了什么错误,只能重建云端储存桶(像我前面写的操作过程一样),那么可能需要一些额外操作。
我是在 21 版本重建了云端储存桶,因为 21 版一直出现同步错误,应该没有完整上传数据。这时候需要更换版本重新上传数据仓库(将正确的数据上传)。比如降到 20 或者使用 dev 版。这里简要介绍一下我进行的操作。(请注意,重建数据仓库会导致数据历史丢失,请谨慎操作,并做好完全的数据备份)
这里进行的操作是云端损坏那篇帖子的修改版,本质相同,可通过那篇帖子方式重建云端数据仓库。以下内容部分经过验证,不保证可行。请不要贸然删除本地数据,至少留有一份备份,数据无价。这里因为只有手机电脑两个设备,因此过程只写两个设备。多设备请自行变通。
此方法可分解为:重置云端数据仓库、重置本地数据仓库。如果仅云端数据仓库报错,则只进行云端数据仓库的重置,如果本地数据仓库报错,则重置本地数据仓库和云端数据仓库。
- 首先停止所有设备的云端同步,切换成手动同步模式(可选,建议),选用数据最完整的设备进行下列操作
- 切换思源版本到 22 版(dev 版)(我也不知道为什么我 20 版也会报这个错,不是 21 版应该都可以)
- 清空云端储存桶(用于重建云端数据仓库)
- 在思源设置-关于中复制数据密钥备用(可选,用于重建本地数据仓库,如不重建本地数据仓库可跳过)
- 重置本地的数据仓库(可选,会丢失本地的数据历史)
- 通过导入密钥或生成密钥初始化数据仓库(可选)
- 点击同步按钮上传数据仓库,等待上传完成
- tips:如果数据量较大,可能看到上传的进度条要走两次,这个是正常的,因为两次上传的是不一样的内容,两次上传的总量不超过 repo 文件夹的大小
- tips:如果两次上传完成之后提示报错或出现循环现象,前者按报错给出的提示操作,后者建议想办法停止上传,因为真的会重复上传(并且这时候云端数据仓库应该是损坏的)
- tips:正常来说 20 版或 22 版应该不会出现重复上传现象,这个问题是 21 版遇到的
- 上传完成之后点击同步按钮测试同步状态。因为目前没有修改任何内容应该很快就能同步完成
- 之后可以修改一点内容试试上传是否成功
- 退出当前设备上的思源,不干扰同步
- 如果设置自动同步则退出
- 如果手动同步则可不退出,但是先不要进行同步
- 另一设备上使用 22 版
- 可选:将前一个设备的 data 导入到此设备(用于减少流量消耗,不进行操作则可以观察到内容变化)
- 可选:重建本地数据仓库
- 从云端下载数据,如果不出现报错则可看到前一设备的内容同步到此设备。
- 如果第六步修改了内容并且在此设备上没有,就可打开修改的那篇文章之后同步,观察界面是否刷新以及修改内容是否成功同步
- 成功同步之后修改部分内容上传,观察是否上传成功。如果上传成功可在前一设备下载,观察是否可下载修改内容
- 此时应该两个设备都可以正常上传或下载修改的内容。应该是修复成功。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于