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

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

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

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

rebron1900 opened this issue Feb 8, 2024 · 15 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的设置,但是又出现不能同步的问题。🤣

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

6 participants