ilogtail icon indicating copy to clipboard operation
ilogtail copied to clipboard

fix: read wrong disk buffer cause high memory

Open Abingcbc opened this issue 6 months ago • 2 comments

核心问题是这一段 image SenderQueueItem是被DiskBuffer从发送队列clone保存的,但其中的flusher是一个指针。当force stop DiskBuffer的时候,flusher可能已经被释放了,但C++访问一个被释放的类的属性是未定义的,通常是可以获取的。但也没办法判断flusher是否已释放,所以只能在读取时拦截。

修复方案

问题一:超大,导致内存暴涨

通过protobuf流式读取。当size超大时,预读取前16KB,判断其中的元信息的几个字段是否超长,排除数据本身超大导致的错判。

问题二:aliuid长度合法,但内容错误

aliuid一定为纯数字组成。校验其每位是否为数字。

Abingcbc avatar Jul 18 '25 08:07 Abingcbc

请确保flusher指针有效,请修复写入时的问题

yyuuttaaoo avatar Jul 24 '25 06:07 yyuuttaaoo

我也是担心这种处理并不解决根本问题,比如可能修复了80%的可能,但是仍然不是最优方案

linrunqi08 avatar Jul 29 '25 08:07 linrunqi08