[Bug]: 在使用cgo-free Sqlite驱动wal模式时,部分Linux下海豹的data-log.db-wal 无法写入 data-log.db
Opened this issue · 3 comments
在提问之前...
- 我理解 Issue 是用于反馈和解决问题的,而非吐槽评论区,将尽可能提供更多信息帮助问题解决
- 我填写了简短且清晰明确的标题,以便开发者在翻阅 issue 列表时能快速确定大致问题。而不是“一个建议”、“卡住了”等
- 我已查看master branch或最新测试版的更新内容,并未提及该 bug 已被修复的情况
- 已有issue中并没有看见其他人与我反馈相同的问题
问题描述
在不确定情况下,data-log.db-wal 无法写入 data-log.db,并随着海豹重启被删除,造成数据丢失
如何复现
无法稳定复现,但目前已有3个 Linux 豹发现此情况
你期望发生的
正常写入
实际上发生的
未写入
日志文件
日志无报错,数据库带个人隐私不放在 GitHub 上了
截图
No response
海豹核心版本
SealDice 1.4.5+20240410
SealDice 1.4.6-beta+20240719.85d86bd
操作系统
Linux version 5.15.0-76-generic (buildd@lcy02-amd64-028) (gcc (Ubuntu 11.3.0-1ubuntu1~22.04.1) 11.3.0, GNU ld (GNU Binutils for Ubuntu) 2.38)
帐号类型
QQ KOOK
使用协议
No response
附加内容
将数据复制到 Windows 运行可正常落盘,但无法确定是 Linux 的问题
有无可能是进程权限问题,数据库是只读权限
有无可能是进程权限问题,数据库是只读权限
很怪的现象,手动执行备份后,观察到data.db可以正常刷入,但是data-logs.db无法正常刷入,还在不断增大,而且PRAGMA wal_checkpoint(TRUNCATE);执行后没有任何报错
此处总结一些收集信息:
- 在某出现该问题的骰主上,进行测试,编译cgo free版本 146,data-log.db-wal无法正确落盘写入。
- 改编译cgo版本后,正确进行落盘
检查使用的cgo free驱动来源:
来源地址
指向了modernc.org的驱动。
从对方的issue中,发现该议题:
证明cgo free版本的wal落盘存在不良。由于是四个月前的议题,且处于开放状态,我认为是没有解决。
有争议的一点是:在对方issue中,提到1.28.0版本工作正常。而我们引入的库使用的依赖库刚好是1.28.0版本,这和议题描述不符。
在issue中最后一条提到了一个个人分支修复,私认为可以试试以它构建一个豹进行测试。