Error: The KV @0x00001024 length has an error.
你好!在使用KVDB时出现这个错误。并且在出现这个错误之后,单片机复位后,存储在KVDB中的参数会丢失。请问这个错误是什么原因导致的呢?谢谢~
我这边也遇到这个问题,是用的file模式。定位到,read_kv中获得的kv_hdr.len是-1。这个现象在我这边每隔一段时间就会出现,都伴随GC回收空间的操作。
请问你最终解决了吗?
我的问题解决了。我的问题的原因是 Flash 的擦写粒度( write_gran ) 和 read, write 函数里面操作参数不一致造成的。操作流程适配好 write_gran,我的问题就解决了。
------------------ 原始邮件 ------------------ 发件人: "armink/FlashDB" @.>; 发送时间: 2024年11月12日(星期二) 下午4:11 @.>; @.@.>; 主题: Re: [armink/FlashDB] Error: The KV @0x00001024 length has an error. (Issue #315)
我这边也遇到这个问题,是用的file模式。定位到,read_kv中获得的kv_hdr.len是-1。这个现象在我这边每隔一段时间就会出现。 请问你最终解决了吗? image.png (view on web)
— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you authored the thread.Message ID: @.***>
Flash 的 page_size 也得设置好,这影响到擦除时的容量。
好吧。我的问题是FILE模式下的cache处理有问题,把FDB_KV_CACHE_TABLE_SIZE禁掉反而好了。
好吧。我的问题是FILE模式下的cache处理有问题,把FDB_KV_CACHE_TABLE_SIZE禁掉反而好了。
我也每天都在用 file 模式,还没有遇到你的说的问题,大概是咋样的使用场景?
log.txt 简要描述下我的使用场景,我分配了一个数据库(名称为info)用来存储运行信息,有一个进程(方便描述这个进程名称比如叫updater)会不停更新这个info数据库,此外还有个info指令用来读取这个数据库的value(事实上就是调用fdb_kv_print来打印value)。我用301043这个key来测试的,发现updater一直跑着的时候,不停执行info 301043经常会出现读不到value的现象,进一步测试就发现日志里的 Error: Read the KV (301048@0x000021CE) CRC32 check failed!的现象,这些现象一般都伴随着gc执行后出现。 我之前怀疑是updater和info进程加锁操作有问题,进程间的同步我用的信号量,测试是没问题的。我对gc的触发不是很清楚,所以发出来让大佬帮忙一起看看。 非常谢谢。
好吧。我的问题是FILE模式下的cache处理有问题,把FDB_KV_CACHE_TABLE_SIZE禁掉反而好了。
我也每天都在用 file 模式,还没有遇到你的说的问题,大概是咋样的使用场景?