librime icon indicating copy to clipboard operation
librime copied to clipboard

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

Open rebron1900 opened this issue 1 year ago • 17 comments

Fcitx5-android的相关错误信息, https://github.com/fcitx5-android/fcitx5-android/issues/433

对方提示错误是从这里抛出来的: https://github.com/rime/librime/blob/8709a7a69fc7c4979d45ae6159bf19cc28f9816d/src/rime/lever/user_dict_manager.cc#L204

操作流程:

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

rebron1900 avatar Feb 08 '24 09:02 rebron1900

Fcitx5-android中的日志文件:https://github.com/fcitx5-android/fcitx5-android/files/14203034/org.fcitx.fcitx5.android-2024-02-08T00_42_18Z.txt

rebron1900 avatar Feb 08 '24 09:02 rebron1900

需要我做什麼呢?

lotem avatar Feb 08 '24 11:02 lotem

需要我做什麼呢?

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

rebron1900 avatar Feb 09 '24 02:02 rebron1900

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

lotem avatar Feb 10 '24 09:02 lotem

同步的每臺設備上怎麼配置同步的,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"

rebron1900 avatar Feb 12 '24 13:02 rebron1900

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

lotem avatar Mar 09 '24 03:03 lotem

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.

shewer avatar Aug 23 '24 00:08 shewer

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.

sf467 avatar Sep 10 '24 10:09 sf467

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

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

ksqsf avatar Sep 10 '24 10:09 ksqsf

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

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

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

sf467 avatar Sep 10 '24 15:09 sf467

https://github.com/iDvel/rime-ice/issues/1021

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

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

关联: https://github.com/fcitx5-android/fcitx5-android/issues/433

mirtlebot avatar Sep 14 '24 00:09 mirtlebot

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

shewer avatar Sep 14 '24 03:09 shewer

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

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

ksqsf avatar Sep 14 '24 16:09 ksqsf

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

shewer avatar Sep 15 '24 23:09 shewer

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

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

rebron1900 avatar Sep 16 '24 02:09 rebron1900

我的方案也有了

JUST-INTJ avatar Dec 17 '24 07:12 JUST-INTJ

ArchLinux的Fcitx5+rime有类似情况

zerodegress avatar Feb 06 '25 10:02 zerodegress

似乎是因为sync_dir的路径中使用了下划线_,我这把下划线取消掉就成功了,比如rime_sync文件夹改成rimesync就成功了。还有就是只能用公用文件夹,比如/storage/emulated/0/Documents🤦‍♂️

lnfuhl avatar Sep 10 '25 21:09 lnfuhl

好像又会了😂

lnfuhl avatar Sep 10 '25 22:09 lnfuhl