armink / FlashDB

An ultra-lightweight database that supports key-value and time series data | 一款支持 KV 数据和时序数据的超轻量级数据库
Apache License 2.0
1.7k stars 400 forks source link

tsdb 写数据的时候突然重启设备,重启后设备 db->last_time 变成0开始 #301

Open shun-dgut opened 6 days ago

shun-dgut commented 6 days ago

[FlashDB][kv][ate_db][ate_db] (packages\FlashDB-v1.1.2\src\fdb_kvdb.c:1801) KVDB size is 24576 bytes. [FlashDB][tsl][record_db][record_db] (packages\FlashDB-v1.1.2\src\fdb_tsdb.c:981) TSDB (record_db) oldest sectors is 0x00000000, current using sector is 0x0001F000. db->last_time 0

shun-dgut commented 5 days ago

一个线程使用fdb_tsl_append间隔10ms不断写入数据,在 tsl_append 里面打印 db->last_time 的值,这个时候使用reboot命令重启设备,上电打印 db->last_time 值,会出现 db->last_time 变化为0的情况。 大概是四次五次使用reboot后就出现。

armink commented 5 days ago

有没有用最新版本测试过呢?

最新版本是 v2.1.0 我看你的是 v1.1.2

shun-dgut commented 5 days ago

有没有用最新版本测试过呢?

最新版本是 v2.1.0 我看你的是 v1.1.2

使用的最新版本测试的,文件夹名字没有更改

armink commented 5 days ago

那你先试着单步调试,分析一下获取 last_time 的逻辑?

shun-dgut commented 5 days ago

那你先试着单步调试,分析一下获取 last_time 的逻辑?

应该是write_tsl如果在执行这个函数的时候,触发了重启,会导致 last_time 变为0

armink commented 5 days ago

image

这里看着是有做掉电保护的,你分析下,为何 last_time 变成 0 了?

shun-dgut commented 5 days ago

image

这里看着是有做掉电保护的,你分析下,为何 last_time 变成 0 了?

fdb_tsdb_init 这一块的逻辑有一些文档说明吗,有没有可能是这一块的逻辑有问题