ZSaberLv0 / ZFVimIM

vim输入法 / Vim Input Method by pure vim script, support: user word, dynamic word priority, cloud db files
204 stars 14 forks source link

同时在多个 vim 中输入可能会导致词库出错 #56

Closed shaman-yellow closed 3 months ago

shaman-yellow commented 8 months ago

我有多次这样的经历:在一个终端中开启vim,使用该输入法输入,这运行很正常;随后,我可能有另外的工作了,开启了另一个终端,并进入 vim 并以该输入法输入,请注意这里我没有关闭前一个终端中的vim 程序,现在两个vim 程序可能都在录入我输入的新的词语;这时候,如果我退出这两个程序,它们会按照作者设定的方式合并词库,并刷新词库文件,但这时候它们就可能造成彼此冲突了。

这后果是,下一次我再使用这个输入法的时候,它就会长时间载入词库,一直载入;当我去检查发生了什么的时候,就会发现,词库的 *count.txt 文件已经异常膨胀到了原先的成千上万倍!大小达到100+M,远比词库本身还要大!

我现在都不敢使用云词库功能了,只是用本地词库功能。每当上述问题出现的时候,我都只能把现在的词库删掉,把最早的词库备份过来。但你知道,这让我这段时间录入的新词全部告吹了,让人沮丧!

由衷地希望作者能够帮忙解决这个问题,感谢!

ZSaberLv0 commented 8 months ago

更新一下 ZFVimIM 和 ZFVimJob 试试 加了个全局锁, 除极端情况外, 应该能解决大多数问题

shaman-yellow commented 8 months ago

更新一下 ZFVimIM 和 ZFVimJob 试试 加了个全局锁, 除极端情况外, 应该能解决大多数问题

感谢帮助!我试试看

shaman-yellow commented 3 months ago

问题没有得到解决,在之后的很长一段时间,类似的错误还是重复出现。但我现在可以确认,这问题应该不是由多个vim 输入导致的错误,因为我只在一个 vim 中输入,也会发生这样的错误,只要进行保存。所以我觉得,错误应该是发生在保存的函数上。以下是我保存时会出现的庞大 count 文件:

├── [4.0K]  backup
│   ├── [6.2M]  db_0.txt
│   ├── [ 18K]  dbCount_0.txt
│   ├── [6.2M]  db_1.txt
│   ├── [ 19K]  dbCount_1.txt
│   ├── [6.1M]  db_2.txt
│   └── [ 50M]  dbCount_2.txt
├── [ 50M]  pinyin_huge_count.txt
└── [6.1M]  pinyin_huge.txt

目前我的预防措施是,通过自动备份每一天的词典文件,然后在问题发生的时候,替换现在的词典。 希望作者有空能帮忙解决一下吧,我一直用的这个插件!

ZSaberLv0 commented 3 months ago

按这个方式提供一下日志吧:

  1. let g:ZFJobVerboseLogEnable = 1
  2. 问题出现的时候:
    • call writefile(g:ZFJobVerboseLog, 'log.txt'), 然后提供 log.txt (注意日志里可能会有你的账号和 accesstoken, 记得删掉)
    • 提供异常膨胀的 count.txt
    • 提供一下出现问题的大致时间
shaman-yellow commented 3 months ago

我按照作者大大的说法做了, 得到了日志文件。 我不是很确定什么时候会发生, 如果是最原始的词典文件, 可能得过好几周才会出现。 但是当我使用备份的词典文件, 也就是已经输入一定程度的内容的文件, 很快就会出现错误。 比如现在, 才过去半小时不到的时间, 就出错了。这段时间我在用这个插件写作。 问题可能有一定“容量”, 达到瓶颈时才会触发。

count 文件太大了, 无法完整上传, 我确认内容后, 把它从 26M 删到了 40K。 count 文件的主要问题应该是, 重复写入, 从 a 到 z 完整写入后, 又会上千百遍的重复写入。 pinyin_huge_count.txt log.txt

ZSaberLv0 commented 3 months ago

https://github.com/ZSaberLv0/ZFVimIM/commit/b16c5a25f4d045ee5b3d75e6c3b8f06c8d8563b7 找到问题了, 更新下试试

shaman-yellow commented 3 months ago

不会再出问题了, 非常感谢!