Skip to content
New issue

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

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

Already on GitHub? # to your account

在fcitx5-android中,备份提示错误。 #810

Open
rebron1900 opened this issue Feb 8, 2024 · 16 comments
Open

在fcitx5-android中,备份提示错误。 #810

rebron1900 opened this issue Feb 8, 2024 · 16 comments

Comments

@rebron1900
Copy link

Fcitx5-android的相关错误信息,
fcitx5-android/fcitx5-android#433

对方提示错误是从这里抛出来的:

LOG(ERROR) << "error backing up user dict '" << dict_name << "'.";

操作流程:

TG群内好几个小伙伴出现了这个问题,根据日志发现是因为同步目录下存在一个 .temp.userdb 名称的文件,删除该文件后可正常同步一会儿,但是过一段时间后又会出现该问题。

@rebron1900
Copy link
Author

@lotem
Copy link
Member

lotem commented Feb 8, 2024

需要我做什麼呢?

@rebron1900
Copy link
Author

需要我做什麼呢?

想问问这个属于BUG还是什么,该怎么修复呢?

@lotem
Copy link
Member

lotem commented Feb 10, 2024

同步的每臺設備上怎麼配置同步的,installation.yaml 內容如何?

@rebron1900
Copy link
Author

同步的每臺設備上怎麼配置同步的,installation.yaml 內容如何?

手机端

distribution_code_name: "fcitx-rime"
distribution_name: Rime
distribution_version: 5.1.4
install_time: "Mon Jan 22 18:06:39 2024"
installation_id: "fcitx-rime"
rime_version: 1.9.0
update_time: "Sun Jan 28 18:15:05 2024"

电脑端

distribution_code_name: Weasel
distribution_name: "小狼毫"
distribution_version: 0.15.0.0
install_time: "Sat Nov 18 10:11:32 2023"
installation_id: "ROG-Flow"
rime_version: 1.9.0
sync_dir: "E:\OneDrive\BACKUP\RimeSync"
update_time: "Sat Jan 20 15:04:50 2024"

@lotem
Copy link
Member

lotem commented Mar 9, 2024

我不懂 fcitx5. 根據描述, 有一種可能是同步操作時沒有關閉輸入引擎. 數據庫不支持兩個線程併發訪問就會出錯.

@shewer
Copy link
Contributor

shewer commented Aug 23, 2024

linux fcitx5 在 autosave & sync 時也一樣

E20240823 08:26:42.180635 139164842452672 level_db.cc:273] Error opening db '.temp' read-only.
E20240823 08:26:42.180667 139164842452672 user_dict_manager.cc:204] error backing up user dict '.temp'.
E20240823 08:26:42.180691 139164842452672 user_dict_manager.cc:220] failed synchronizing 1/12 user dicts.

@sf467
Copy link

sf467 commented Sep 10, 2024

linux上用fcitx5,报错是这样:

9月 10 17:31:42 Analyse kwin_wayland_wrapper[1274]: E20240910 17:31:42.167756 131557962548928 level_db.cc:259] Error opening db 'sbfm': IO error: lock /home/sf467/.local/share/fcitx5/rime/sbfm.userdb/LOCK: already held by process
9月 10 17:31:42 Analyse kwin_wayland_wrapper[1274]: E20240910 17:31:42.167858 131557962548928 user_dict_manager.cc:198] failed to merge snapshot file: /home/sf467/.local/share/fcitx5/rime/sync/trime/sbfm.userdb.txt
9月 10 17:31:42 Analyse kwin_wayland_wrapper[1274]: E20240910 17:31:42.171670 131557962548928 level_db.cc:259] Error opening db 'sbfx': IO error: lock /home/sf467/.local/share/fcitx5/rime/sbfx.userdb/LOCK: already held by process
9月 10 17:31:42 Analyse kwin_wayland_wrapper[1274]: E20240910 17:31:42.171751 131557962548928 user_dict_manager.cc:198] failed to merge snapshot file: /home/sf467/.local/share/fcitx5/rime/sync/trime/sbfx.userdb.txt

手机上用同文,也是类似的报错:

--------- beginning of main
09-10 17:59:57.975 E/rime.trime(17495): Error opening db 'sbfm': IO error: lock /storage/emulated/0/Documents/trime/sbfm.userdb/LOCK: already held by process
09-10 17:59:58.038 E/rime.trime(17495): failed to merge snapshot file: /storage/emulated/0/Documents/trime/sync/trime/sbfm.userdb.txt
09-10 17:59:58.070 E/rime.trime(17495): Error opening db 'sbfm' read-only.
09-10 17:59:58.070 E/rime.trime(17495): error backing up user dict 'sbfm'.
09-10 17:59:59.063 E/rime.trime(17495): failed synchronizing 1/3 user dicts.

@ksqsf
Copy link
Member

ksqsf commented Sep 10, 2024

@sf467 声笔方案使用了复杂的 Lua 实现各种功能。你碰到的问题大概率是 Lua 组件未能正确在 fini 中关闭词库导致的,与本 issue 无关,建议向声笔开发者反馈。

(搜索了一下就找到了至少一处比较可疑的地方:https://github.com/sbsrf/sbsrf/blob/main/sbxlm/lua/sbxlm/hint.lua#L17

@sf467
Copy link

sf467 commented Sep 10, 2024

@sf467 声笔方案使用了复杂的 Lua 实现各种功能。你碰到的问题大概率是 Lua 组件未能正确在 fini 中关闭词库导致的,与本 issue 无关,建议向声笔开发者反馈。

(搜索了一下就找到了至少一处比较可疑的地方:https://github.com/sbsrf/sbsrf/blob/main/sbxlm/lua/sbxlm/hint.lua#L17

试了试墨奇方案,同步是正常的,看来确实是声笔的问题

@mirtlebot
Copy link

iDvel/rime-ice#1021

OP 测试了几天,认为是外部同步工具的原因。关掉改名选项就好了。

但不知道 @shewer 这个是不是类似。

关联: fcitx5-android/fcitx5-android#433

@shewer
Copy link
Contributor

shewer commented Sep 14, 2024

我在 rime_api_console 中 使用 syncizhronize command 井不會出現這問題

@ksqsf
Copy link
Member

ksqsf commented Sep 14, 2024

librime 会在内部创建一个 .temp.userdb,但是会在用完后立即删除,所以可能是出于某种原因(如 Android 上可能有一些权限问题,或者被外部程序锁定),导致 .temp.userdb 没有被删掉,然后被 UserDictManager::GetUserDictList 算到了要同步的 userdb 中。

一个 workaround 是从 GetUserDictList 里排除掉 .temp.userdb,但是我不理解 @shewer 为什么在电脑上也会出这个问题。

@shewer
Copy link
Contributor

shewer commented Sep 15, 2024

找到問題了, 在user_data_dir 下有 .temp.userdb/ 目錄
GetUserDictLsit() 會在 user_data_dir 中查找 userdb
砍了就好了
可能是以前異常中斷時遺留下來的

@rebron1900
Copy link
Author

找到問題了, 在user_data_dir 下有 .temp.userdb/ 目錄 GetUserDictLsit() 會在 user_data_dir 中查找 userdb 砍了就好了 可能是以前異常中斷時遺留下來的

正想继续反馈虽然之前修改了foldersync的设置,但是又出现不能同步的问题。🤣

@JUST-INTJ
Copy link

我的方案也有了

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

No branches or pull requests

7 participants