rime / librime

Rime Input Method Engine, the core library
https://rime.im
BSD 3-Clause "New" or "Revised" License
3.37k stars 551 forks source link

磁盘爆满 #263

Closed EdwardElric01 closed 5 years ago

EdwardElric01 commented 5 years ago

win 10系统, 具体触发原因不清楚,但是五笔模式会的userdb文件夹中产生很多.sst文件,导致磁盘爆满

image

xiaoqun2016 commented 5 years ago

https://github.com/EasyIME/PIME/issues/445

lotem commented 5 years ago

如果是 leveldb 的問題就比較麻煩了。從線索上看還真有可能。 我去看了一下 google/leveldb,他的 windows 分支好像2016年以來都沒更新。 如果總出現這個問題,可能得暫時改用文本格式的用戶詞典。

xiaoqun2016 commented 5 years ago

我这儿只在两年前比较密集地出现过两三次,后来都很正常。感觉这个问题出现的概率很小。不晓得其他人是什么情况。

yjsfox commented 5 years ago

這個問題我昨天遇到了,Win10 0.12 版的用戶資料夾luna_pinyin.userdb 裡面突然暴增到12G,產生非常多sst檔案,把系統磁碟灌滿了。解安裝 小狼毫,再刪除目錄,重新安裝 0.13 版,目前還在觀察。

lotem commented 5 years ago

找到了上游的BUG: https://github.com/google/leveldb/issues/498

lotem commented 5 years ago

研究一下能否通过升级到最新版leveldb解决问题,还要保证用户词典里的.sst文件自动升级到新的格式。

相关事项:thirdparty改用submodule组织是否更方便升级?可能得修改自动构建脚本,以及下游项目的构建脚本。

yjsfox commented 5 years ago

👍! Great! Good to know this bug was identified! Looking forward to the fix!

lotem commented 5 years ago

@Prcuvu 講過leveldb最新代碼要用VS2017編譯。 藉此機會把第三方庫整理、更新一遍,改爲submodule,根據情況引用上游代碼庫或建立鏡像、暫存我方未合併到上游的修改。印象裏opencc可能需要一些改動才能用VS2017編譯。 最後修改librime的appveyor工程配置,切換到新的工具鏈。 工作不少啊。

Bambooin commented 5 years ago

不知道,Trime项目里面是不是已经做了一些这样的工作,是否可以复用部分构建脚本。 里面已经是submodule了,并且很多已经是最新代码了。 https://github.com/osfans/trime/tree/develop/app/src/main/jni

Prcuvu commented 5 years ago

我试着使用最新的 leveldb 编译了 librime: rime-dll-leveldb-fix.zip 请遵循以下步骤替换 librime,并在使用前重新生成用户文件夹中的二进制文件:

  1. 退出算法服务
  2. 删除用户文件夹中的 build 文件夹及其中所有内容
  3. 将 rime-dll-leveldb-fix.zip 压缩包中的 rime.dll 解压,替换程序文件夹中的同名文件
  4. 从开始菜单运行【小狼毫】重新部署,等待直至 WeaselDeployer.exe 运行结束
  5. 启动算法服务
Prcuvu commented 5 years ago

@Prcuvu 講過leveldb最新代碼要用VS2017編譯。 藉此機會把第三方庫整理、更新一遍,改爲submodule,根據情況引用上游代碼庫或建立鏡像、暫存我方未合併到上游的修改。印象裏opencc可能需要一些改動才能用VS2017編譯。 最後修改librime的appveyor工程配置,切換到新的工具鏈。 工作不少啊。

貌似是我这边的 Visual C++ Build Tools 出了问题,AppVeyor 上的 VS2015 是可以编译 leveldb 的。转换 submodule 的工作会持续进行,依然会在最后迁移到 VS2017。

Prcuvu commented 5 years ago

研究一下能否通过升级到最新版leveldb解决问题,还要保证用户词典里的.sst文件自动升级到新的格式。

根据我的测试,最新版 leveldb 可以自动读取已有的 .sst 文件中的内容并写入新生成的 .ldb 文件中。

lotem commented 5 years ago

多謝 @Prcuvu

我最近倒楣下載到一個有問題的VS2017版本,遇到奇怪的錯誤。升級VS後就好了。廣而告知。