FlashDB icon indicating copy to clipboard operation
FlashDB copied to clipboard

关于TSDB写入时的一些疑问。

Open chenpeng1017 opened this issue 6 months ago • 4 comments

TSDB执行写入过程时,会调用update_sec_state来更新扇区状态。当检查到当前扇区无法满足要求后,它会在secotr_hdr自动记录最后一条数据的时间,修改当前扇区为FULL状态,最后格式化下一扇区,向下一扇区执行写入。但是有没有一种可能,把扇区改为FULL的之后突然程序死机重启了,这样的话所有的扇区都会变为FULL状态(假设现在TSDB已经处于滚动写的状态)。下一次开机如果检测不到EMPTY扇区或者USING扇区的话,整个运行逻辑会无法自洽。我这边是把修改当前扇区为FULL状态这个操作挪到了最后,至少保证有一个扇区是EMPTY或者USING状态,不知道这样做会不会保险些。

chenpeng1017 avatar May 13 '25 03:05 chenpeng1017

你的想法是对的吧。提个PR啊,也想用用

skyformat99 avatar May 19 '25 09:05 skyformat99

TSDB执行写入过程时,会调用update_sec_state来更新扇区状态。当检查到当前扇区无法满足要求后,它会在secotr_hdr自动记录最后一条数据的时间,修改当前扇区为FULL状态,最后格式化下一扇区,向下一扇区执行写入。但是有没有一种可能,把扇区改为FULL的之后突然程序死机重启了,这样的话所有的扇区都会变为FULL状态(假设现在TSDB已经处于滚动写的状态)。下一次开机如果检测不到EMPTY扇区或者USING扇区的话,整个运行逻辑会无法自洽。我这边是把修改当前扇区为FULL状态这个操作挪到了最后,至少保证有一个扇区是EMPTY或者USING状态,不知道这样做会不会保险些。

你的想法是对的吧。提个PR啊,也想用用

skyformat99 avatar May 19 '25 09:05 skyformat99

相对于源码来说确实要好一点,作者看到了可以修改一下

hellobugger avatar Aug 18 '25 10:08 hellobugger

这样的话所有的扇区都会变为FULL状态(假设现在TSDB已经处于滚动写的状态)。下一次开机如果检测不到EMPTY扇区或者USING扇区的话,整个运行逻辑会无法自洽

这个时候重启会导致哪种异常呢?

armink avatar Aug 19 '25 06:08 armink