同步出现了很多重复文件

我看那个时间点,应该是断过一次网。

不知道为什么,断网之后,为什么出现了很多同名文件,ID 不一样了。

  • 思源笔记

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

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

    18932 引用 • 70972 回帖

相关帖子

欢迎来到这里!

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

注册 关于
请输入回帖内容 ...
  • 88250 7 评论

    同步过程中断网或者其他意外情况不会造成数据重复或者损坏的。

    重复的文档应该是因为生成了冲突文件,请参考 用户指南 - 数据安全 - 数据可用性保障 - 云端同步 章节。

    目前我正在找,唉,大概多了 500 个文件
    moohadun
    能给增加配置,比如,冲突文件自动生成的,带有【冲突文件】后缀这样吗?不然我也不知道自动生成的冲突文件,区别。
    moohadun
    @moohadun 冲突文档的文档名上默认会添加 Conflicted 的(也就是你所说的“冲突”)
    JeffreyChen
    你们的同步逻辑有问题吧。我发现今中午又产生了 500 个文件。
    moohadun
    @moohadun 同步逻辑没有问题的,请参考用户指南云端同步章节,那里有冲突场景介绍。
    88250
    没有产生同步文件。 没有出现默认 Conflicted 的文件。 你去复现一下,将一个文档移动到另一个文件夹中。是不是会出现新文档
    moohadun
    复现的条件,应该是有很多的文档时,将一个父文档移动到另一个地方,云端同步了,你们的本地数据写的不及时,然后与云端比较不一致导致的 。
    moohadun
  • 88250 1 评论

    我这里使用 500 子文档、2000 子文档的数据集多次移动的同时进行同步测试,无法重现该问题,如果你那里能够稳定重现,请上传系统日志,我看下能否定位问题。

    1 回复
    我上传了。
    moohadun
  • systemlog1.zip

    时间有两个节点:1.31 晚上 19:12-22 分左右。

    2.1 中午,12 点左右

    1 回复
  • 88250 1 评论

    1 月 31 号 19:32 校验索引时发现了 221 个 ID 重复的文档:

    W 2024/01/31 19:32:36 index_fix.go:128: exist more than one tree duplicated [221], reindex it
    

    往前看可以找到是从 Android 端同步过来的:

    I 2024/01/31 19:13:39 siyuan.go:138: downloaded object [siyuan/1642173161657/repo/siyuan-note-wei/indexes/2b2524e142b3371892a71743d9f824a018d675a3]
    I 2024/01/31 19:13:39 sync.go:1592: got cloud latest [device=ec69xd57s31n/android, id=2b2524e142b3371892a71743d9f824a018d675a3, files=8662, size=1.6 GB, created=2024-01-31 18:40:09]
    

    Android 端的这个快照 2b2524e 有 8662 个文件。以 ID 重复的 20240110112136-hmzri1c.sy 为例,可以看到在本地的路径是:/20240110224850-mj5s0a2/20240111162221-s1f6o2h/20240110112136-hmzri1c.sy,但是 Android 端的路径是 /20240110224850-mj5s0a2/20240110112136-hmzri1c.sy,中间少了一层,这种情况下文件路径不同,所以不会自动合并,而是将 Android 的文件下载到本地,导致本地存在了两个一样 ID 的文档。

    继续往前追溯 Android 端同步,可以找到 1 月 30 号的同步:

    I 2024/01/30 09:35:00 sync.go:1592: got cloud latest [device=ec69xd57s31n/android, id=8638d653e54c7863c2a04ab62e4564b2faf74591, files=8412, size=1.6 GB, created=2024-01-30 09:34:58]
    

    这时候 Android 端快照 8638d65 文件数量是 8412,也就是说这段时间内 Android 端增加了 250 个文件,这些文件是其他端同步过去的还是如何新增的,需要 Android 端的日志才能进一步分析了,可能就是这些文件重复导致的问题,请上传 Android 端的日志,谢谢。

    1、安卓日志已经上传;2、你们肯定考虑了同步文件的时候,发生了文档移动的情况(不限于跨文件夹移动);3、可否告知“中间少了一层,这种情况下文件路径不同,所以不会自动合并”这个逻辑是为了哪种场景。4、还有就是我删除多个文件夹后来又出现了。不知道为啥,甚至删不掉,我只能手动清空文件系统
    moohadun
  • 88250

    移动端的这份日志中可以找到快照 2b2524e 生成的时候已经有重复文件了:

    I 2024/01/31 18:40:09 repo.go:595: walk data [files=8662] cost [894.393749ms]
    I 2024/01/31 18:40:09 ref.go:50: got local latest [device=ec69xd57s31n/android, id=8f878d82797dac8e978e35833d6e51067f83bbb7, files=8412, size=1.6 GB, created=2024-01-31 18:39:20]
    I 2024/01/31 18:40:09 ref.go:64: updated local latest to [device=ec69xd57s31n/android, id=2b2524e142b3371892a71743d9f824a018d675a3, files=8662, size=1.6 GB, created=2024-01-31 18:40:09]
    

    往前看可以找到文件 /20240110224850-mj5s0a2/20240111162221-s1f6o2h/20240110112136-hmzri1c.sy 是从云端同步下来的,但是此时本地同时也存在了文件 /20240110224850-mj5s0a2/20240110112136-hmzri1c.sy,所以这两个文件不存在冲突(虽然文件内容一样但是路径不同),也就会被作为不同的两个文件对待:

    I 2024/01/31 18:40:08 sync.go:308: sync merge upsert [7d95d3f1adae4694dadffa6539b88e8e9456bb7f, /20240110224850-mj5s0a2/20240111162221-s1f6o2h/20240110112136-hmzri1c.sy, 2024-01-10 11:22:07]
    ....
    I 2024/01/31 18:40:09 sync.go:419: merge index add [7d95d3f1adae4694dadffa6539b88e8e9456bb7f, /20240110224850-mj5s0a2/20240111162221-s1f6o2h/20240110112136-hmzri1c.sy, 2024-01-10 11:22:07]
    ....
    I 2024/01/31 18:40:09 sync.go:1336: upsert file [598049fc72fdf7c8d2955b47bd4512c05f676902, /20240110224850-mj5s0a2/20240110112136-hmzri1c.sy, 2024-01-10 11:22:07] chunk [9670d894d23a470a0eb384536cb3b690d2650dc0]
    

    最终结果就是产生了重复文档。

    你那边是否手动操作过文件系统(比如复制文件)?另外是否还有其他参与同步的设备,如果有的话请一并提供日志文件。我们得再找找重现步骤,这个问题之前没有人反馈过,请帮助我们尽量跟踪定位到问题,谢谢。

  • systemlog2.zip

    这个日志看看有吗?不是很确定。

    回答:1,没有手动操作过文件系统的。

    疑惑:能否解惑,“中间少了一层,这种情况下文件路径不同,所以不会自动合并"这个逻辑是为了哪种场景。id 相同为啥不能认定为同一个文件嘞,增加判断路径是为了场中场景

    1 回复
  • 88250 2 评论

    这份 macOS 端的日志 1 月 30 号 12 点进行了一次全量下载,文件没有重复,也没有其他异常。

    文件路径不同的话肯定就是不同的文件了。

    我又在 PC 端日志中搜索了下,发现 /20240110224850-mj5s0a2/20240111162221-s1f6o2h/20240110112136-hmzri1c.sy 文件第一次出现是在 1 月 31 号 15 点 16 分:

    I 2024/01/31 15:16:54 sync.go:1336: upsert file [7d95d3f1adae4694dadffa6539b88e8e9456bb7f, /20240110224850-mj5s0a2/20240111162221-s1f6o2h/20240110112136-hmzri1c.sy, 2024-01-10 11:22:07] chunk [9670d894d23a470a0eb384536cb3b690d2650dc0]
    

    这个文件最后的更新时间是 2024-01-10 11:22:07,后面也也只没有变动过,只是云端一直都存在 /20240110224850-mj5s0a2/20240110112136-hmzri1c.sy,所以文件就重复了。

    那我也不懂了。我这个情况出现的还是挺多的。好像最近这几个月都有过,只不过,我这次因为重复的太多了,我才提。会不会是因为我的文档太多了呢
    moohadun
    @moohadun 那就只能继续观察了,麻烦留意重现步骤。我这边在 10000+ 文档的数据集下测试移动文档暂时没有发现重复问题。
    88250
  • @88250 现在同步又出现问题了,这次参与的只有两个终端。场景:将文件夹下 A 的 A1 文件移动到 B 文件夹下,然后打开安卓端,进行同步。然后,文件夹 A 下的 A1 文件没有了。B 文件夹下多了一个新的文件 B1

  • moohadun 1 2 评论
    1 回复
    旧的 ID 信息———((20231119192606-jxpmujz '任务管理'));((20231122104908-bg77jgx '项目管理'))
    moohadun
    新的 ID 信息 任务管理](siyuan://blocks/20240326165050-tsnl9rk);项目管理](siyuan://blocks/20240326165050-vptp2gj)
    moohadun
  • 88250

    找到问题了,是因为移动端下午 16:50 同步时索引校验程序错误修订了重复 ID(这时候同步还未完成,不应该订正数据)

    W 2024/03/26 16:50:50 index_fix.go:242: exist more than one tree with the same id [/storage/emulated/0/Android/data/org.b3log.siyuan/files/siyuan/data/20240110224850-mj5s0a2/20231119192606-jxpmujz.sy], reset it
    

    这个问题下个版本解决 Issue #10761 · siyuan-note/siyuan 感谢反馈!

    1 操作
    88250 在 2024-03-27 09:05:42 更新了该回帖
请输入回帖内容 ...

推荐标签 标签

  • 心情

    心是产生任何想法的源泉,心本体会陷入到对自己本体不能理解的状态中,因为心能产生任何想法,不能分出对错,不能分出自己。

    59 引用 • 369 回帖 • 1 关注
  • Sphinx

    Sphinx 是一个基于 SQL 的全文检索引擎,可以结合 MySQL、PostgreSQL 做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索。

    1 引用 • 180 关注
  • uTools

    uTools 是一个极简、插件化、跨平台的现代桌面软件。通过自由选配丰富的插件,打造你得心应手的工具集合。

    5 引用 • 13 回帖 • 1 关注
  • Lute

    Lute 是一款结构化的 Markdown 引擎,支持 Go 和 JavaScript。

    25 引用 • 191 回帖 • 19 关注
  • PostgreSQL

    PostgreSQL 是一款功能强大的企业级数据库系统,在 BSD 开源许可证下发布。

    22 引用 • 22 回帖 • 2 关注
  • 又拍云

    又拍云是国内领先的 CDN 服务提供商,国家工信部认证通过的“可信云”,乌云众测平台认证的“安全云”,为移动时代的创业者提供新一代的 CDN 加速服务。

    21 引用 • 37 回帖 • 508 关注
  • MySQL

    MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是最流行的关系型数据库管理系统之一。

    675 引用 • 535 回帖 • 3 关注
  • 智能合约

    智能合约(Smart contract)是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。智能合约概念于 1994 年由 Nick Szabo 首次提出。

    1 引用 • 11 回帖 • 3 关注
  • BAE

    百度应用引擎(Baidu App Engine)提供了 PHP、Java、Python 的执行环境,以及云存储、消息服务、云数据库等全面的云服务。它可以让开发者实现自动地部署和管理应用,并且提供动态扩容和负载均衡的运行环境,让开发者不用考虑高成本的运维工作,只需专注于业务逻辑,大大降低了开发者学习和迁移的成本。

    19 引用 • 75 回帖 • 617 关注
  • OpenStack

    OpenStack 是一个云操作系统,通过数据中心可控制大型的计算、存储、网络等资源池。所有的管理通过前端界面管理员就可以完成,同样也可以通过 Web 接口让最终用户部署资源。

    10 引用 • 9 关注
  • Flume

    Flume 是一套分布式的、可靠的,可用于有效地收集、聚合和搬运大量日志数据的服务架构。

    9 引用 • 6 回帖 • 600 关注
  • SOHO

    为成为自由职业者在家办公而努力吧!

    7 引用 • 55 回帖 • 91 关注
  • 服务器

    服务器,也称伺服器,是提供计算服务的设备。由于服务器需要响应服务请求,并进行处理,因此一般来说服务器应具备承担服务并且保障服务的能力。

    124 引用 • 580 回帖
  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3169 引用 • 8207 回帖
  • Latke

    Latke 是一款以 JSON 为主的 Java Web 框架。

    70 引用 • 532 回帖 • 715 关注
  • 工具

    子曰:“工欲善其事,必先利其器。”

    276 引用 • 685 回帖
  • CodeMirror
    1 引用 • 2 回帖 • 121 关注
  • Postman

    Postman 是一款简单好用的 HTTP API 调试工具。

    4 引用 • 3 回帖
  • 游戏

    沉迷游戏伤身,强撸灰飞烟灭。

    169 引用 • 799 回帖
  • Mac

    Mac 是苹果公司自 1984 年起以“Macintosh”开始开发的个人消费型计算机,如:iMac、Mac mini、Macbook Air、Macbook Pro、Macbook、Mac Pro 等计算机。

    164 引用 • 594 回帖
  • 旅游

    希望你我能在旅途中找到人生的下一站。

    85 引用 • 895 回帖
  • 强迫症

    强迫症(OCD)属于焦虑障碍的一种类型,是一组以强迫思维和强迫行为为主要临床表现的神经精神疾病,其特点为有意识的强迫和反强迫并存,一些毫无意义、甚至违背自己意愿的想法或冲动反反复复侵入患者的日常生活。

    15 引用 • 161 回帖 • 1 关注
  • 安全

    安全永远都不是一个小问题。

    189 引用 • 813 回帖
  • Google

    Google(Google Inc.,NASDAQ:GOOG)是一家美国上市公司(公有股份公司),于 1998 年 9 月 7 日以私有股份公司的形式创立,设计并管理一个互联网搜索引擎。Google 公司的总部称作“Googleplex”,它位于加利福尼亚山景城。Google 目前被公认为是全球规模最大的搜索引擎,它提供了简单易用的免费服务。不作恶(Don't be evil)是谷歌公司的一项非正式的公司口号。

    49 引用 • 192 回帖 • 1 关注
  • RESTful

    一种软件架构设计风格而不是标准,提供了一组设计原则和约束条件,主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。

    30 引用 • 114 回帖 • 1 关注
  • H2

    H2 是一个开源的嵌入式数据库引擎,采用 Java 语言编写,不受平台的限制,同时 H2 提供了一个十分方便的 web 控制台用于操作和管理数据库内容。H2 还提供兼容模式,可以兼容一些主流的数据库,因此采用 H2 作为开发期的数据库非常方便。

    11 引用 • 54 回帖 • 640 关注
  • webpack

    webpack 是一个用于前端开发的模块加载器和打包工具,它能把各种资源,例如 JS、CSS(less/sass)、图片等都作为模块来使用和处理。

    41 引用 • 130 回帖 • 293 关注