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

必现的一个无法写入文件的问题 #61

Open
GaoLinHuang opened this issue Dec 15, 2022 · 9 comments
Open

必现的一个无法写入文件的问题 #61

GaoLinHuang opened this issue Dec 15, 2022 · 9 comments

Comments

@GaoLinHuang
Copy link

文件已经创建并有值后,修改系统时间比当前修改文件的时间更早,重启电脑,启动软件,无法修改和同步文件

@lindexi
Copy link
Member

lindexi commented Dec 15, 2022

@GaoLinHuang 感谢,但是由于现在依赖时间用来做同步更新,也许不会改此问题

@GaoLinHuang
Copy link
Author

修改时间的场景还是会有的,比如修改了时区等,将会导致无法更新。重启也不会更新的。这就是一个致命问题

@GaoLinHuang
Copy link
Author

目前是这样的场景,A进程本身修改之后,其实也会通知到进程A,其他进程修改时也会通知到A进程。有一个循环通知了。

@lindexi
Copy link
Member

lindexi commented Dec 15, 2022

@GaoLinHuang 理论上改时区是没有问题的,如果改时区有问题,那就是 bug 了,我要去修

@GaoLinHuang
Copy link
Author

场景是这样:如果文件已经存在,并且修改过。然后将时区改成东七区或者其他时区,此时会操作系统的时间比文件修改的时间要早了。这个情况下,文件无法修改同步到本地的,重启电脑也无法解决

@GaoLinHuang
Copy link
Author

我现在改成,判断是进程内部更改还是进程外部更改了。进程内部更改的时候我就不监听外部文件改变了。然后同步完成数据后再监听文件的改变。通过判断是否是内部进程改变来决定是否是更新文件到缓存,还是更新缓存到本地。与时间无关了。我本地验证多进程暂时没有啥问题。不过我再压测一下

@lindexi
Copy link
Member

lindexi commented Dec 29, 2022

@GaoLinHuang 我似乎没有复现你的问题,我重新看了代码,在 FileDictionarySynchronizer 里,采用的是 DateTimeOffset 方式,读取的是 LastWriteTimeUtc 属性,理论上是没有时区问题

@GaoLinHuang
Copy link
Author

修改时区确实是不会导致无法写入的问题,因为修改时区后,文件也会自动同步时间。
这个问题只会再修改系统的时间才会出现。

@lindexi
Copy link
Member

lindexi commented Dec 30, 2022

@GaoLinHuang 那问题还行

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

No branches or pull requests

2 participants