Replies: 2 comments 6 replies
-
麻烦帮忙看下 @armink |
Beta Was this translation helpful? Give feedback.
0 replies
-
db_lock/db_unlock 确认对接生效了吗?正常 FlashDB 是有锁来保证的 |
Beta Was this translation helpful? Give feedback.
6 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
kvdb记录录制下来的实际文件名及文件路径(不是保存文件本身);现在有三个线程对数据库读写:
1,一个线程每30秒通过fdb_kv_set_blob向数据库插入一条记录,即文件名及文件路径;
2,另一个线程根据接受到的消息,如果这个文件已经上传到服务器,就通过fdb_kv_del删除这条文件记录;
3,第三个线程每60秒 通过fdb_kv_iterate轮寻数据库,拿到kv->name,逐一与实际的文件夹下已有文件对比,如果不存在或文件大小很小,拿夜通过fdb_kv_del删除数据库kvdb中这条记录;
现在系统跑几个小时,fdb_kv_iterate中的_fdb_flash_read读到的kv_hdr.len是25904(正常大小都是101);
个人分析:
a,原来怀疑是线程1,2对kvdb有写操作时,线程3正好读,所以读到值异常;对策:就在fdb_kv_iterate中的read_kv()前后加了db_lock和db_unlock; 但还是会出现;
b,怀疑是系统代码启用了cache导致的,关闭了FDB_KV_USING_CACHE宏定义;也还是会出现;
有没有什么建议?
Beta Was this translation helpful? Give feedback.
All reactions