v3.1.21 同步失败:magic number mismatch(含个人解决方案)

遇到问题过程

遇到问题过程

先说我遇到问题的全流程。

  1. 首先在 3.1.20 版本,我在启动应用的情况下通过 GitHub 下载了 3.1.21 版本安装包,随后安装包自动启动,停止了 3.1.20 版本运行。这时候可能是在同步还是什么的,我实在没注意。就当它在同步吧。
  2. 之后安装新版本的安装包。
  3. 启动思源,产生同步报错:input error: magic number mismatch。这个我认为是同步锁里面存的校验码。这个报错不会阻止同步,而是导致一直会上传数据,而无法完成同步。并且一次同步结束之后会立即启动下一次同步。
  4. 我停止了思源运行,上储存桶删除了同步锁文件,重启思源观察变化。这时候的报错变为云端同步错误,不过那边的链接点不了(毕竟不是弹出报错提示)
  5. 我停止了思源运行,清空了整个存储桶。之后启动思源,由思源上传整个存储桶。这时候数据正常上传。
  6. 之后再次同步,发现仍然存在报错。这时候我再次清空存储桶,并重置数据仓库。通过重新生成数据密钥的方式重置了数据仓库。这时候重新上传数据。
  7. 这时候发现上传数据仓库会一直重复这个过程。重启思源,发现这次上传正常生成了 index 等文件夹,而上一次没有。上传结束后继续重复这个过程。
  8. 切换新数据仓库之后重复上述重置过程,问题仍然存在。不过有趣的是每次重新上传文件数量都在减少。

进度到目前为止,已经重建了数据仓库,重建了云端存储,修复云端存储的帖子有链接吗?后续有新内容我再更新帖子,先歇一下。晚点我开个新存储桶试试。


进度更新:在通过小手段让思源忘记之前的同步错误之后,我重建数据仓库并且清空云端存储,等待多次同步完成(好像只有两次)。之后点击同步按钮,检查发现不再提示错误信息,而是显示正常的同步结果。现在尝试将思源版本又更新上去试试。

在更新思源版本之后,上传设备在启动同步时显示正常的同步结果(上传/下载 1 文件),手动触发同步也是正常的。在退出的时候又需要全部上传,并且又是两次(先全量再少几个文件)。打开其他设备同步,使用相同的仓库和密钥可以正常同步,但是需要全量上传。

另外,在本次尝试中,发现如果一个设备在启动中同步(条件可能出错),它可能忽略云端的同步锁。我在最后这次尝试中先点击了电脑退出,之后过一段时间后打开手机端。这时候发现电脑端回退到全量同步,而手机端在启动后也进入同步状态。即此时电脑端和手机端同时进入全量上传阶段。这个显然是存在问题的。于是强行停止手机同步(断网),之后电脑端又一次报错标题错误,于是认为标题错误可能由一个设备在同步中同步锁被替换(或类似原因)导致。


我累了,这里是今天的日志:siyuan.zip,这是从 20 升级到 21 前后的日志都有,实在累了。这里观察到,今天出现若干次的重复上传现象主要是获取 S3 存储为空,从而导致新一次上传。但实际上是有东西的,就在几秒前还获取到 600 多 M 的存储。这个我不知道了,又没有套 CDN,又没有缓存。

关于最后一次同步:通过手动上传启动同步,出现重复上传,之后通过关闭思源结束上传。之后去手机选择下载,出现云端数据损坏。无法下载云端数据。但是只要云端上传的循环不结束,云端数据永远都是损坏的,因为这一次上传不完整,又覆盖了上次上传的数据(尽管数据理论上一样,但是这样的循环中文件数量不一样,猜测是什么地方改变了)。

解决方案

这边的解决方案仅为个人看法,并未完全经过验证,可能存在问题。请优先从最保守的方法开始试验。

方法 1

通过更新到 3.1.22 版本解决问题。

方法 2

如果你乱搞云端储存桶导致出了什么错误,只能重建云端储存桶(像我前面写的操作过程一样),那么可能需要一些额外操作。

我是在 21 版本重建了云端储存桶,因为 21 版一直出现同步错误,应该没有完整上传数据。这时候需要更换版本重新上传数据仓库(将正确的数据上传)。比如降到 20 或者使用 dev 版。这里简要介绍一下我进行的操作。(请注意,重建数据仓库会导致数据历史丢失,请谨慎操作,并做好完全的数据备份)

这里进行的操作是云端损坏那篇帖子的修改版,本质相同,可通过那篇帖子方式重建云端数据仓库。以下内容部分经过验证,不保证可行。请不要贸然删除本地数据,至少留有一份备份,数据无价。这里因为只有手机电脑两个设备,因此过程只写两个设备。多设备请自行变通。

此方法可分解为:重置云端数据仓库重置本地数据仓库。如果仅云端数据仓库报错,则只进行云端数据仓库的重置,如果本地数据仓库报错,则重置本地数据仓库和云端数据仓库。

  1. 首先停止所有设备的云端同步,切换成手动同步模式(可选,建议),选用数据最完整的设备进行下列操作
  2. 切换思源版本到 22 版(dev 版)(我也不知道为什么我 20 版也会报这个错,不是 21 版应该都可以)
  3. 清空云端储存桶(用于重建云端数据仓库
  4. 在思源设置-关于中复制数据密钥备用(可选,用于重建本地数据仓库,如不重建本地数据仓库可跳过)
    1. 重置本地的数据仓库(可选,会丢失本地的数据历史)
    2. 通过导入密钥或生成密钥初始化数据仓库(可选)
  5. 点击同步按钮上传数据仓库,等待上传完成
    1. tips:如果数据量较大,可能看到上传的进度条要走两次,这个是正常的,因为两次上传的是不一样的内容,两次上传的总量不超过 repo 文件夹的大小
    2. tips:如果两次上传完成之后提示报错或出现循环现象,前者按报错给出的提示操作,后者建议想办法停止上传,因为真的会重复上传(并且这时候云端数据仓库应该是损坏的)
    3. tips:正常来说 20 版或 22 版应该不会出现重复上传现象,这个问题是 21 版遇到的
  6. 上传完成之后点击同步按钮测试同步状态。因为目前没有修改任何内容应该很快就能同步完成
    1. 之后可以修改一点内容试试上传是否成功
  7. 退出当前设备上的思源,不干扰同步
    1. 如果设置自动同步则退出
    2. 如果手动同步则可不退出,但是先不要进行同步
  8. 另一设备上使用 22 版
    1. 可选:将前一个设备的 data 导入到此设备(用于减少流量消耗,不进行操作则可以观察到内容变化)
    2. 可选:重建本地数据仓库
  9. 从云端下载数据,如果不出现报错则可看到前一设备的内容同步到此设备。
    1. 如果第六步修改了内容并且在此设备上没有,就可打开修改的那篇文章之后同步,观察界面是否刷新以及修改内容是否成功同步
    2. 成功同步之后修改部分内容上传,观察是否上传成功。如果上传成功可在前一设备下载,观察是否可下载修改内容
  10. 此时应该两个设备都可以正常上传或下载修改的内容。应该是修复成功。
  • 思源笔记

    思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。

    融合块、大纲和双向链接,重构你的思维。

    24703 引用 • 101389 回帖 • 1 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • fly86 2 评论

    看到这个有点害怕,虽然我没有遇到这样的问题,我才打算从其他的笔记软件打算迁移过来...

    官方同步解千愁(
    JeffreyChen
    别怕,更新之后已经没事了
    EmptyLight
  • 其他回帖
  • xkj

    我也是报错“同步失败:invalid input: magic number mismatch (Provider: S3) v3.1.21”

    删除了储存桶,重新新建了储存桶,工作空间,重置了仓库,也试过“https”改成“http”,都无济于事,用 3.1.20 版本,3.1.22-dev1,都会报这个错误,而且反复全量同步,上传的数据量爆炸。

    重启之后偶尔不会报错,但是同步完成的图标不是“云朵 + 绿色勾”的标准图标

  • zackyj via macOS

    v3.1.22-dev2 可以...3.1.22 还是有这个问题,退回去了

    1 回复
  • EmptyLight

    收集到的日志,基本上大差不差,就放一次了:居然放不下,只能分两条了

    I 2025/02/11 19:24:49 runtime.go:87: kernel is booting: * ver [3.1.21] * arch [amd64] * os [Microsoft Windows 11 Home China] * pid [36452] * runtime mode [prod] * working directory [***\siyuan\resources] * read only [false] * container [std] * database [ver=20220501] * workspace directory [***\SiYuan] ... I 2025/02/11 19:24:49 serve.go:209: kernel [pid=36452] http server [127.0.0.1:50894] is booting ... I 2025/02/11 19:24:57 sync.go:146: sync before boot W 2025/02/11 19:25:04 sync.go:1555: not found cloud latest I 2025/02/11 19:25:04 repository.go:1348: boot get sync cloud files elapsed [7.29s] I 2025/02/11 19:25:05 repo.go:661: walk data [files=5884] cost [478.3238ms] I 2025/02/11 19:25:05 ref.go:134: got local full latest [files=5884, size=1.1 MB], cost [10.081ms] I 2025/02/11 19:25:05 repository.go:1314: boot index repo elapsed [7.78s] I 2025/02/11 19:25:05 conf.go:865: tree/block count [85/5314] I 2025/02/11 19:25:05 working.go:196: kernel booted I 2025/02/11 19:25:05 box.go:77: auto stat [trees=85, blocks=5314, dataSize=660.43 MB, assetsSize=348.2 MB] ... I 2025/02/11 19:25:19 repository.go:1430: syncing data repo [device=7054***, kernel=ah3olvv, provider=2, mode=a/true] I 2025/02/11 19:25:19 repo.go:661: walk data [files=5884] cost [200.1997ms] I 2025/02/11 19:25:19 ref.go:134: got local full latest [files=5884, size=1.1 MB], cost [5.4703ms] I 2025/02/11 19:25:19 ref.go:93: updated local latest to [device=7054***/windows, id=fdf725..., files=5884, size=655.04 MB, created=2025-02-11 19:25:19], full latest [size=1.1 MB], cost [12.8199ms] W 2025/02/11 19:25:27 sync.go:1555: not found cloud latest I 2025/02/11 19:32:37 sync.go:247: got local latest [fdf725...] files [5884] I 2025/02/11 19:32:37 sync.go:1464: got latest sync [device=7054***/windows, id=398ff5..., files=5884, size=655.04 MB, created=2025-02-11 17:20:00] I 2025/02/11 19:32:38 sync.go:275: local upsert [296226..., .../license.kmindconf, 2025-02-11 19:25:15] I 2025/02/11 19:32:38 sync.go:275: local upsert [cb63fc..., ....sy, 2025-02-11 19:08:18] I 2025/02/11 19:32:38 sync.go:275: local upsert [2f708f..., .../bg-cover-setting.json, 2025-02-11 19:25:08] I 2025/02/11 19:32:38 sync.go:275: local upsert [bc538f..., .../user.kmindconf, 2025-02-11 19:25:09] I 2025/02/11 19:32:38 sync.go:1182: uploaded index [device=7054***/windows, id=fdf725..., files=5884, size=655.04 MB, created=2025-02-11 19:25:19] I 2025/02/11 19:32:38 sync.go:915: uploaded cloud ref [refs/latest, id=fdf725...] I 2025/02/11 19:32:38 ref.go:93: updated local latest to [device=7054***/windows, id=fdf725..., files=5884, size=655.04 MB, created=2025-02-11 19:25:19], full latest [size=1.1 MB], cost [16.8061ms] I 2025/02/11 19:32:38 sync.go:1392: updated latest sync [device=7054***/windows, id=fdf725..., files=5884, size=655.04 MB, created=2025-02-11 19:25:19] I 2025/02/11 19:32:38 repository.go:1502: synced data repo [device=7054***, kernel=ah3olvv, provider=2, mode=a/true, ufc=5887, dfc=2, ucc=5499, dcc=0, ub=285.74 MB, db=0 B] in [439.07s], merge result [conflicts=0, upserts=0, removes=0] I 2025/02/11 19:32:38 index_fix.go:56: start checking index... I 2025/02/11 19:32:39 repository.go:1430: syncing data repo [device=7054***, kernel=ah3olvv, provider=2, mode=a/false] I 2025/02/11 19:32:40 index_fix.go:76: finish checking index I 2025/02/11 19:32:40 repo.go:661: walk data [files=5884] cost [1.3552027s] I 2025/02/11 19:32:40 ref.go:134: got local full latest [files=5884, size=1.1 MB], cost [9.3126ms] W 2025/02/11 19:32:41 sync.go:1567: got empty cloud latest I 2025/02/11 19:39:39 sync.go:247: got local latest [fdf725...] files [5884] I 2025/02/11 19:39:39 sync.go:1464: got latest sync [device=7054***/windows, id=fdf725..., files=5884, size=655.04 MB, created=2025-02-11 19:25:19]
  • 查看全部回帖