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
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
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