Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

使用第三方同步盘时弹出提示并退出内核 #7683

Closed
88250 opened this issue Mar 16, 2023 · 27 comments
Closed

使用第三方同步盘时弹出提示并退出内核 #7683

88250 opened this issue Mar 16, 2023 · 27 comments
Assignees
Milestone

Comments

@88250
Copy link
Member

88250 commented Mar 16, 2023

  • 工作空间不能放置在包含 dropboxgoogle driveonedrivepcloud 路径下
  • 创建 data/.siyuan/filesys_status_check/ 文件夹,在其下随机创建 4K 数据大小的文件后重复尝试打开和重命名该文件,检测这个过程是否会被其他程序占用(Windows)
  • 检查 data/.siyuan/filesys_status_check/ 下创建的随机文件的情况,大于一个说明可能是同步盘生成的冲突文件(Windows/Linux/macOS)
@88250 88250 added this to the 2.8.0 milestone Mar 16, 2023
@88250 88250 changed the title 使用第三方同步盘时弹出提示 使用第三方同步盘时弹出提示并退出内核 Mar 16, 2023
@GH-W94
Copy link

GH-W94 commented Mar 16, 2023

这下是不是“先暂停第三方同步盘,然后使用思源,关闭思源,最后再手动同步”这种使用方法也不能用了?

@woniuxia
Copy link

这下是不是“先暂停第三方同步盘,然后使用思源,关闭思源,最后再手动同步”这种使用方法也不能用了?

这个应该不影响,只要不是在思源使用期间使用第三方同步就行。

@88250
Copy link
Member Author

88250 commented Mar 16, 2023

如果是命中路径检查失败的情况不能用。

@Zuoqiu-Yingyi
Copy link
Contributor

最好路径检查在 Electron 选择工作空间时进行,文件系统测试在内核中进行,这样侵入性就比较小了~

@88250
Copy link
Member Author

88250 commented Mar 17, 2023

最好路径检查在 Electron 选择工作空间时进行,文件系统测试在内核中进行,这样侵入性就比较小了~

路径会在安装初始化界面、主界面切换工作空间时也执行检查的。内核运行时也会定时检查路径和文件系统状态。

@Zuoqiu-Yingyi
Copy link
Contributor

Zuoqiu-Yingyi commented Mar 17, 2023

内核运行时也会定时检查路径和文件系统状态。

这样侵入性太大了❗
为什么要定时检查, 启动时检查不就可以了吗❓
内核检查路径的意义是啥❓

@88250
Copy link
Member Author

88250 commented Mar 17, 2023

因为不知道用户啥时候开启的第三方同步盘的同步,比如已有的工作空间已经设置在同步盘路径下了,或者运行时加入了第三方盘同步。我们必须把第三方盘全面禁止掉,否则稳定性相关的问题很难排查。

@Zuoqiu-Yingyi
Copy link
Contributor

比如已有的工作空间已经设置在同步盘路径下了

这在打开/切换工作空间时就已经校验过了, 因此无需再使用内核校验一次, 内核仅需要使用 filesys_status_check 方案进行校验即可

@88250
Copy link
Member Author

88250 commented Mar 17, 2023

比如当前工作空间已经是 OD 路径了,没有调用打开/切换工作空间接口的,这时候就只能通过定时校验。

@Zuoqiu-Yingyi
Copy link
Contributor

比如当前工作空间已经是 OD 路径了,没有调用打开/切换工作空间接口的,这时候就只能通过定时校验。

拉起内核前不能校验工作空间吗

@88250
Copy link
Member Author

88250 commented Mar 17, 2023

能是能,但是也要给用户可以切换工作空间的机会。如果拉起前校验不过就进不了主界面,这样的话用户无法切换工作空间。

现在的定时校验是启动后 10m 才进行第一次校验。

@Zuoqiu-Yingyi
Copy link
Contributor

能是能,但是也要给用户可以切换工作空间的机会。如果拉起前校验不过就进不了主界面,这样的话用户无法切换工作空间。

所以最好的实现方案是不带参数 --workspace 启动时应该在进入主界面前通过一个下拉框让用户选择工作空间, 然后在校验+打开工作空间, 这时可以复用 打开/切换 工作空间接口
而不是绕了一圈用内核进行校验

@88250
Copy link
Member Author

88250 commented Mar 17, 2023

不是的,我指的情况是现在已经放在 od 路径下的情况。

@88250 88250 closed this as completed Mar 17, 2023
@Zuoqiu-Yingyi
Copy link
Contributor

不是的,我指的情况是现在已经放在 od 路径下的情况。

我是指启动时不默认进入上一次关闭的工作空间, 而是通过一个下拉选项选择工作空间, 此时进行判断

@88250
Copy link
Member Author

88250 commented Mar 18, 2023

这种不好用啊,每次启动用户都要选择。

@Zuoqiu-Yingyi
Copy link
Contributor

这种不好用啊,每次启动用户都要选择。

可以默认打开上次关闭的工作空间,然后校验失败后回退到该页面即可,在认证界面也添加一个按钮退出内核并返回该页面,类似于 IDE

@88250
Copy link
Member Author

88250 commented Mar 18, 2023

这样的改动相较于定时检查路径代价有点大,再说定时检查路径也没有副作用的。

@Zuoqiu-Yingyi
Copy link
Contributor

这样的改动相较于定时检查路径代价有点大,再说定时检查路径也没有副作用的。

关键在于解耦,将打开工作空间拉起内核前所有的工作都抽取出来,而不是揉在一块,还是同时揉在两个地方

@88250
Copy link
Member Author

88250 commented Mar 18, 2023

检查路径的代码实现本身就无法解耦,前端和内核都要单独实现一份。

@Zuoqiu-Yingyi
Copy link
Contributor

检查路径的代码实现本身就无法解耦,前端和内核都要单独实现一份。

单独调用内核的用户应该不多见吧

@88250
Copy link
Member Author

88250 commented Mar 18, 2023

这个问题我觉得不用纠结了,现在的实现在没有明显弊端的情况下应该是最优解了。

@why8023
Copy link

why8023 commented Mar 21, 2023

image

请问, 我没有添加和删除操作, 这个文件数量的变化是和这个检查文件有关吗?

@88250
Copy link
Member Author

88250 commented Mar 21, 2023

@why8023 和这个 issue 没有关系;可以对比快照看下具体变化。

@why8023
Copy link

why8023 commented Mar 22, 2023

@why8023 和这个 issue 没有关系;可以对比快照看下具体变化。

image

您好, 我今天新建一个空库, 里面只添加了一个文档,
其中:

  1. 数据快照1是刚刚建好文档就创建的快照
  2. 数据快照2是data/.siyuan/filesys_status_check/check_consistency_renamed文件夹出现时创建的快照
  3. 数据快照3是data/.siyuan/filesys_status_check为空目录的时候创建的快照

测试期间我只对文档做了文字修改, 所以, 根据测试情况来看, 应该是check_consistency_renamed这个文件导致的问题

同时, 我也发现这个问题会导致这样的显示问题
image

@88250
Copy link
Member Author

88250 commented Mar 22, 2023

@why8023 感谢帮忙定位问题,在 #7744 中解决。

@xuhuanzy
Copy link

xuhuanzy commented Apr 5, 2023

这下是不是“先暂停第三方同步盘,然后使用思源,关闭思源,最后再手动同步”这种使用方法也不能用了?

蚌埠住了, 还真不给用了, 直接检测目录将主流的同步盘全干掉, 只能自己编译或者写个定时计划同步咯

@Xiaobaishushu25
Copy link

这下是不是“先暂停第三方同步盘,然后使用思源,关闭思源,最后再手动同步”这种使用方法也不能用了?

蚌埠住了, 还真不给用了, 直接检测目录将主流的同步盘全干掉, 只能自己编译或者写个定时计划同步咯

我先暂停再打开还是弹这个,直接退出同步软件结果还弹😂

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

8 participants