Closed sstiger1230 closed 1 year ago
Android 版本最近修复了一个由同步软件行为导致的问题. 你可以尝试下 nightly 中的 Android apk https://github.com/logseq/logseq/releases/tag/nightly
谢谢
问题依旧,还是出现多个pages内容丢失 安装了Desktop/Android APP Nightly Release 20220627 版本。
好像丢失内容的总是那么几个
留意了一下,Journals也有内容丢失的,这两次都是 2022_05_26 和 2022_06_20
有没有可复现的操作序列?
并不是所有被清空的文件在"logseq\bak\pages\pages名称" 目录下都有备份文件。
"logseq\bak\pages\"目录是Logseq自己创建的吗? 这个目录文件写入机制是什么?
@sstiger1230 文件内容和Logseq内数据库的内容冲突时, 会写到这个备份目录
如果文件是外部被删除的, 会写到logseq/recycle
File will be dumped to logseq/bak
when file content is duplicated with the version in the DB. Then a "conflict modal" pops up and user may choose the version.
File will be dumped to logseq/recycle
if external editing detected.
If the file is moved to recycle
, then 0.7.6 helps, which contains a fix toward the unlink behavior of 3rd party sync service on Windows 🙂
If the file is moved to bak
, it might be related to external editing. We will have another fix towards the file watcher behavior.
If the file is moved to
recycle
, then 0.7.6 helps, which contains a fix toward the unlink behavior of 3rd party sync service on Windows 🙂 If the file is moved tobak
, it might be related to external editing. We will have another fix towards the file watcher behavior.
The file I found moved to bak
, it not related to external editing. It just edited by Logseq-win and Logseq-android,and use 3rd party sync service on android.
@sstiger1230 Yes, it is also related to the 3rd party sync service on ANDROID. We will have another fix for this.
@cnrpman 下个版本会修复吗?
Related: https://github.com/logseq/logseq/issues/6005
We can partially reproduce the issue
升级了0.7.7版本,问题依然存在
电脑端升级了 0.7.7版, 手机端先卸载了旧版本,并清空本地文件,重新在syncthing中删除设备后重新添加设备,重新同步目录。之后安装0.7.7版本。
之后测试,在电脑端编辑了2个文件,一个是今天的journals文件,另一个是自建的pages。等自动同步结束,查看电脑端文件,发现编辑的pages文件内容被清空。 在手机端运行logseq,内容都正常,但是查看文件目录,同样编辑的pages文件内容为0字节。
syncThing同步后,journals文件正常,但是自建的pages文件内容被清空。 @andelf
奇怪,又试着编辑一个页面,同步后内容没清空 太无语了。。。。。试着编辑了几个文件,结果最后还是有文件内容被清空。。。。。还没有找到规律
刚刚把备份的文件整个目录复制回去,结果自动同步后,发现刚才修改的文件又0字节了。
复制备份文件,等待手机、PC端同步软件同步结束,查看PC端文件目录,这次发现今天Journals文件0字节了。
手机端又一个奇怪现象: 如图,试来试去,手机、电脑目录都是这样。 手机端能正常查看Other文件,内容都在。 手机端查看文件,Other是0字节 手机端选择刷新,什么提示、进度都没有,完全没反映。
@sstiger1230
丢失的文件分别在Windows, Android 两个端下的哪个位置能找到? <graph directory>/logseq/bak
还是 <graph directory>/logseq/.recycle
里?
@sstiger1230 丢失的文件分别在Windows, Android 两个端下的哪个位置能找到?
<graph directory>/logseq/bak
还是<graph directory>/logseq/.recycle
里?
两个目录中都没有。 Windows , Android都一样
有个情况说明一下,不知道有没有关系: 通过syncThing同步的设备有多个:Windows设备3台,Android设备1台。
不过感觉还是Android的原因,现在Android暂停了同步,好像就正常了。
刚才在Android上的操作:
<graph directory>/logseq/bak
和 <graph directory>/logseq/.recycle
两个目录中都没有丢失的文件。@cnrpman 这个问题找到原因了吗?
@sstiger1230 抱歉,我复现不出来 如果是reindex后被清空,被清空的文件是不是有什么特殊的文件名或者内容? 可以截图吗?
@andelf @llcc
再次尝试:
虽然通过logseq能够看到文件内容,但是在文件管理器中看是0字节的空文件。
@andelf @llcc @cnrpman
似乎找到规律了。
文件内容没什么特别的,测试修改的内容也都类似"其他测试-10",”test---001“
@andelf @llcc @cnrpman
谢谢测试。
humm, 目前不建议在手机端打开logseq的情况下使用电脑端Logseq 目前情况是电脑的file watcher是非常稳定的, 可以很好应对云端数据的修改. 但移动端的file watcher还差一些. 所以最好不要在手机端打开的时候, 在其他端对云端文件进行编辑
如果中文文件有问题,英文文件没问题,推测是Android上的File Watcher的问题 (是capacitor URL encode的问题吗,这边目前是什么状态? @llcc ) 如果是Android上capacitor的问题, 等 PR6134 合并后会处理
也可能是Syncthing在Android上还有问题? @andelf
最好能补完之前每一次测试时的页面名称,因为这个问题跟页面名称相关
初步测试,同时编辑2个文件,其中一个是journals,另外一个”OPAC.md“ 文件依然会被清零
@sstiger1230 看起来是跟Syncthing + 多文件有关
又试了试:
<graph directory>/logseq/bak
目录中。先这样了,不知道是不是发现规律了。
大概汇总一下晚上做的测试:
电脑端修改当天journals文件,中文pages文件:“疫情.md”; 手机端选择刷新,在手机端logseq中能查看修改的两个文件内容; 查看手机端文件目录、电脑端文件目录,中文pages文件(疫情.md)文件0字节。当前journals文件正常;
第二次只修改了一个中文page文件(其他.md),手机端刷新后一切正常。
第三次测试在电脑端修改当天journals文件,英文pages文件(OPAC.md);
手机端选择刷新,在手机端logseq中还是能够看修改的两个文件内容;
两个文件在手机端、电脑端文件内容都被清空。<graph directory>/logseq/bak
目录中有两个文件的备份;
第四次测试在电脑端修改其他日子journals文件(不是当天的journals) 英文pages文件(eCard.md); 手机端刷新后,文件内容正常。 @cnrpman
又试了试:
- 手机端syncthing暂停同步logseq;
- 手机端清空Logseq缓存,数据;
- 电脑端刷新,重新索引;
- 手机端连接数据线到电脑,从电脑复制所有文件到手机;
- 电脑端修改“2022_07_25.md” , "OPAC.md" 两个文件;
- 手机端刷新,提示正在解析文件 2/3;
- 发现两个文件内容都被清空????奇怪。
- 两个文件备份在
<graph directory>/logseq/bak
目录中。- 修改 “2022_07_24.md”(不是当天的journals) , "eCard.md" 两个文件;
- 手机端再次刷新后,文件内容正常。
先这样了,不知道是不是发现规律了。
步骤1 暂停同步后, 是哪一步又重新开启同步的? 有没有详细的操作序列
在电脑端修改文件之前重新开启同步
@andelf 给您发邮件单独沟通?
@sstiger1230
没问题.
mailto: shuyu@logseq.com
CC: help@logseq.com
今天抽空升级电脑端、手机端到0.7.9版本。又按照同样的方式进行了一轮测试。结果基本一致,还有文件内容被清空。
我推测手机端的刷新机制有问题,每次文件内容被清空,都是手机刷新后产生的。 在App刷新操作前,都确认了手机端已经同步成功后。
还有,明明手机端文件内容已经被清空,可是刷新后,没有出现解析文件的提示,还能正常显示已经被清空的文件内容。 @andelf
@sstiger1230 你说的刷新是指 refresh / re-index 还是重新打开App
@sstiger1230 你说的刷新是指 refresh / re-index 还是重新打开App
刷新是指 refresh
今天想到一个另类的测试:
在桌面端修改文件之前,到手机端app存储设置中删除数据,之后重新设置手机端图谱,文件内容正常。
@andelf
最新测试(不使用syncthing同步工具):
编辑2个文件 1.eCard.md 2.libsys_SQL.md(内容清空)
@andelf 是不是可以判断是logseq本身的“刷新(读取本地最新文件)”功能有问题? 与syncthing没关系?
@sstiger1230 明白了, 会继续尝试复现
@cnrpman @andelf 有什么进展吗?
@sstiger1230 暂时没有
找了一个设备做对比,系统是LineageOS 17.1 (Android 10),安装了 Logseq 0.8.0,发现很大的不同:
Android 10系统下被外部程序修改的文件,Logseq能够自动识别读取。 然而 华为鸿蒙HarmonyOS 2.0系统,无法识别被外部程序修改的文件,必须通过logseq本身的“刷新(读取本地最新文件)才能够看到更新后的文件内容,但是会造成部分文件内容丢失。
@cnrpman @andelf
@sstiger1230 明白了,听起来是是syncthing在鸿蒙下的行为异常
@cnrpman 不是syncthing的原因,这次对比测试,我是用Markor 文本编辑器,直接修改的文件。
@sstiger1230 最近修复了Android上路径相关的问题。主要是针对一些<graph directory>
路径里有空格和特殊字符的情况。
这个和你的使用情景有关系吗?
Close this issue for no response for long. Feel free to re-open or open a new issue if you still have questions.
What happened?
不定时发现某些pages内容丢失,但是在"logseq\bak\pages\pages名称" 目录下,有一个备份文件,是丢失前的文件内容。
出现过多次,涉及多个pages文件,不固定。
不知道"logseq\bak\pages\pages名称" 目录是什么?
PC和手机通过Syncthing 1.20.2同步数据。
Reproduce the Bug
不知道为什么出现这种情况,不明白操作了什么。
发现文件大小为0,或者打开文件发现内容是空,才注意到内容丢失。
Expected Behavior
No response
Screenshots
Desktop Platform Information
windows 11, Desktop, 0.7.5 Syncthing 1.20.2
Mobile Platform Information
华为, 鸿蒙HarmonyOS 2.0, App, 0.7.5 Syncthing 1.20.2
Additional Context
No response